udp server 예제

서버의 주소에는 서버 컴퓨터의 IP 주소와 해당 컴퓨터의 해당 포트에서 수신 대기 하는 소켓에 해당하는 포트 번호가 포함됩니다. IP 주소는 네트워크 바이트 순서의 4바이트(32비트) 값입니다(위의 htonl 참조). UDP의 이론에서 클라이언트는 TCP와 같은 서버와의 연결을 형성하지 않고 대신 데이터그램만 보냅니다. 마찬가지로 서버는 연결을 수락할 필요가 없으며 데이터그램이 도착할 때까지 기다립니다. 도착 시 데이터그램에는 서버가 올바른 클라이언트로 데이터를 전송하는 데 사용하는 발신자의 주소가 포함됩니다. TCP 소켓을 사용하면 서버가 수신 대기 시스템 호출을 통해 수신 대기를 위한 소켓을 설정한 다음 수락을 호출하여 연결을 기다립니다. UDP는 연결되지 않습니다. 서버는 소켓이 있으면 즉시 메시지를 수신할 수 있습니다. recvfrom 시스템 호출을 사용하여 특정 전송 주소(IP 주소 및 포트 번호)에서 들어오는 데이터그램을 기다립니다. 간단한 서버를 살펴보겠습니다. 소켓을 만들고 컴퓨터에서 사용 가능한 모든 IP 주소에 바인딩하지만 특정 포트 번호에 바인딩합니다. 그런 다음 메시지를 수신하고 내용을 인쇄하는 루프를 합니다. 참고: TCP가 거의 없는 경우 간단한 텔넷 클라이언트를 사용하여 서버 프로그램을 테스트할 수 없습니다.

다음 항목에서 수행할 서버를 사용하여 플레이할 클라이언트 프로그램을 작성해야 합니다. 서버는 sendto에서 해당 주소를 사용하고 받는 사람의 주소로 메시지를 다시 보낼 수 있습니다. 소켓에 대한 논의에서 TCP/IP 프로토콜을 사용하는 소켓과 연결 지향 소켓을 사용한 프로그래밍의 예를 다루었습니다. 여기서는 UDP/IP를 통해 연결없는 소켓을 사용하는 예제를 간략하게 살펴보겠습니다. 예를 들어 UDPClientSocket.sendto(바이트토센드, 서버주소포트)는 google.com 주소를 찾으려고 한다고 가정합니다. 아래 코드에서는 서버와 클라이언트 간에 하나의 hello 메시지를 교환하여 모델을 보여 줍니다. 이제 클라이언트가 서버에 메시지를 보내고 있습니다. 서버가 해당 클라이언트로 메시지를 다시 보내려면 어떻게 해야 합니까? 연결이 없으므로 서버가 응답을 다시 쓸 수 없습니다. 다행히도, recvfrom 호출은 우리에게 서버의 주소를 주었다.

remaddr에 배치되었습니다: 이 예제에서는 포트를 0으로 설정하여 사용 가능한 포트 번호를 선택하도록 운영 체제에 요청합니다. 특정 포트 번호를 사용하려는 경우 전달 주소가 소켓 주소 구조에 정의된 줄을 변경합니다. 소켓은 다양한 유형의 통신 인터페이스와 함께 작동하도록 설계되었기 때문에 인터페이스는 매우 일반적입니다. 포트 번호를 매개 변수로 받아들이는 대신 사용 중이던 주소 패밀리(네트워크 유형)에서 실제 형식이 결정되는 sockaddr 구조를 사용합니다. 예를 들어 UNIX 도메인 소켓을 사용하는 경우 실제로 파일 시스템에서 파일을 만듭니다. UDP는 사용자 데이터그램 프로토콜의 약어입니다. UDP는 TCP/IP 소송의 인터넷 프로토콜을 사용합니다. UDP를 사용하는 통신에서 클라이언트 프로그램은 대상 서버가 UDP에서도 실행되는 대상 서버로 메시지 패킷을 보냅니다. 샘플 UDP 서버 프로그램을 사용하여 새로운 UDP 지식을 시도해 볼 시간입니다.

이 프로그램은 사용자 ID와 일부 텍스트를 포함하는 데이터 그램을 받은 다음 SNDMSG 명령을 사용하여 해당 사용자에게 메시지를 보냅니다.