[게임 서버] 3.2 네트워크 연결 및 송신
카테고리: GameServer
태그: GameServer
📦 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()함수는 연결이 완료될 때까지 블로킹되며, 성공/실패 여부를 반환한다- 데이터 수신 시 소켓 버퍼 문제로 인해 데이터를 놓칠 수 있으므로 주의가 필요하다
댓글남기기