윈도우 소켓 프로그래밍 예제

호출이 즉시 반환되므로 데이터가 준비되지 않을 수 있습니다. 네트워크에서 받는 이 호를 기다리고 있으며 작업을 완료할 시간이 없었습니다. 이 경우 현재 상태는 errno 값 소켓입니다. 에비블록. 비차단 모드는 setblocking()을 통해 지원됩니다. 네트워킹과 소켓은 큰 주제입니다. 리터럴 볼륨은 그들에 대해 기록되었습니다. 소켓이나 네트워킹을 새로 접하는 경우 모든 용어와 조각에 압도당하는 것이 정상입니다. 나는 내가 한 것을 알고있다! 연결이 호출되면 winsock은 연결에 사용할 IP 및 포트 번호를 선택하고 실제로 연결하기 전에 소켓을 바인딩합니다.

포트 번호는 순간에 무료 아무것도 할 수 있습니다, IP 번호는 조금 더주의가 필요합니다. PC에 IP가 두 개 이상 있을 수 있습니다. 예를 들어, 인터넷과 로컬 네트워크에 연결된 PC에는 적어도 3개의 IP(인터넷과 함께 사용하기 위한 외부 IP, 로컬 네트워크 IP(192.168.x x, 10.0.x.x 등)와 루프 백 주소(127.0.0.1))가 있습니다. 여기서는 소켓이 연결에 사용하는 네트워크도 결정하므로 소켓이 바인딩되는 IP가 중요합니다. 로컬 PC 192.168.0.4에 연결하려는 경우 해당 IP가 인터넷에서 사용되지 않으며 찾을 수 없으므로 인터넷 공급자의 네트워크를 사용하여 연결할 수 없습니다. 따라서 동일한 네트워크(예: 192.168.0.1)에서 소켓을 IP에 바인딩해야 합니다. 마찬가지로 소켓을 로컬 루프 백 주소(127.0.0.1)에 바인딩하면 해당 `네트워크`에 다른 주소가 없기 때문에 동일한 주소에만 연결할 수 있습니다. 이 UDP 소켓에 대해 SIO_UDP_CONNRESET ioctl을 true로 설정합니다. 이 UDP 소켓 이 경우 socket.send()가 호출될 때 송신 버퍼의 모든 데이터가 전송을 위해 큐에 대기되지 않았을 수 있음을 기억합니다. 소켓의 네트워크 버퍼가 가득 찼을 수 있으며 socket.send()를 다시 호출해야 할 수 있습니다.

이것이 상태 검사가 있는 이유입니다. create_response()는 한 번만 호출해야 하지만 _write()를 여러 번 호출해야 합니다. s = 소켓 (ressrc->ai_family, SOCK_RAW, ((ressrc->ai_family == AF_INET6) ? 3 : ressrc->ai_protocol)); 패킷을 보내는 UDP 소켓은 SocketException을 받게 됩니다. 네이티브 첫 번째 단계는 통신 프로토콜의 유형을 지정하는 소켓 함수를 호출하는 것입니다(IPv4에 기반한 TCP, IPv6, UDP를 기반으로 하는 TCP). 소켓 끝점은 파일 설명자로 표시되므로 읽기 및 쓰기를 사용하여 소켓이 연결되어 있는 한 소켓과 통신할 수 있습니다. 그러나 옵션을 지정하려면 다른 함수 집합이 필요합니다. 기능 클로즈소켓은 소켓을 닫는 데 사용됩니다. 또한 WSACleanup winsock 라이브러리 (ws2_32.dll)를 언로드하려면 호출해야합니다.