[게임 서버] 3.2 네트워크 연결 및 송신

게시:     수정

카테고리:

태그:

📦 3. 소켓 프로그래밍

👉🏻 항목 2: 네트워크 연결 및 송신

🔌 TCP 소켓의 특징

1:1 통신:

  • TCP는 1:1 통신만 허락하기에 소켓 1개는 끝점 하나와 1대1 대응된다

💻 TCP 송신 코드 예시

main() {
	s = socket(TCP); // 1
	s.bind(any_port); // 2
	s.connect("55.66.77.88:5959"); // 3
	s.send("hello"); // 4
	s.close(); // 5
}


📋 동작 과정 상세 설명

1. TCP 소켓 생성:

  • TCP 소켓 핸들을 생성한다

2. 포트 바인딩:

  • 소켓을 내 컴퓨터의 빈 포트에 할당하고, 없다면 점유된 포트와 공유한다

3. 연결 시도:

  • 소켓을 상대의 끝점과 TCP 연결을 시도하며, 블로킹된다
  • 연결 성공 시 true, 실패 시 false를 반환한다

4. 데이터 전송:

  • 상대에게 “hello” 문자열을 보낸다

5. 연결 종료:

  • TCP 소켓을 닫으며, 연결을 종료한다

⚠️ 주의사항

데이터 수신 문제:

  • TCP를 수신하는 코드에서 데이터를 가끔 수신하지 못한다
  • 소켓 버퍼와 관련이 있다!

🧐 정리

  • TCP는 1:1 통신 방식으로, 하나의 소켓은 하나의 끝점과만 연결된다
  • socket()bind()connect()send()close() 순서로 동작한다
  • connect() 함수는 연결이 완료될 때까지 블로킹되며, 성공/실패 여부를 반환한다
  • 데이터 수신 시 소켓 버퍼 문제로 인해 데이터를 놓칠 수 있으므로 주의가 필요하다

GameServer 카테고리 내 다른 글 보러가기

댓글남기기