wsasend 예제

2048바이트 미만으로 전송한 후 반환할 수 있습니다. ret 변수는 시스템이 데이터를 보내고 받을 각 소켓에 대해 일정량의 버퍼 공간을 할당하기 때문에 전송되는 바이트 수로 설정됩니다. 데이터를 보내는 경우 내부 버퍼는 데이터가 와이어에 배치될 수 있을 때까지 전송할 데이터를 보유합니다. 몇 가지 일반적인 상황이 이 문제를 일으킬 수 있습니다. 예를 들어, 방대한 양의 데이터를 전송하기만 하면 이러한 버퍼가 빠르게 채워집니다. 또한 TCP/IP의 경우 창 크기 슬라이딩 윈도우 데모(http://www2.rad.com/networks/2004/sliding_window/)라고 합니다. 수신 단은 이 창 크기를 조정하여 수신할 수 있는 데이터의 양을 나타냅니다. 수신기가 데이터로 넘쳐나는 경우 보류 중인 데이터를 따라잡기 위해 창 크기를 0으로 설정할 수 있습니다. 이렇게 하면 보낸 사람은 0보다 큰 새 창 크기를 받을 때까지 중지합니다. 송신 호출의 경우 1024바이트만 보유하는 버퍼 공간이 있을 수 있으며, 이 경우 나머지 1024바이트를 다시 제출해야 합니다.

다음 코드는 모든 바이트가 전송되도록 합니다: 분산 수집 지원은 원래 함수 recv 및 writev와 함께 버클리 소켓에 도입된 개념입니다. 이 기능은 Winsock 2 기능 WSARecv(), WSARecvFrom(), WSASend(및 WSASendTo)에서 사용할 수 있습니다. 매우 구체적인 방식으로 포맷된 데이터를 보내고 받는 응용 프로그램에 가장 유용합니다. 예를 들어 클라이언트에서 서버로의 메시지는 항상 일부 작업을 지정하는 고정 된 32 바이트 헤더로 구성되고 64 바이트 데이터 블록이 뒤따르고 16 바이트 트레일러로 종료 될 수 있습니다. 이 예제에서 WSASend()는 세 개의 메시지 유형에 해당하는 세 개의 WSABUF 구조의 배열로 호출할 수 있습니다. 수신 측에서 WSARecv()는 각각 32바이트, 64바이트 및 16바이트의 데이터 버퍼를 포함하는 세 개의 WSABUF 구조로 호출됩니다. 방법 매개 변수가 유효하지 않거나 소켓 유형과 일치하지 않습니다. 예를 들어 SD_SEND는 UNI_RECV 소켓 유형과 함께 사용됩니다.

Share on Google+Share on FacebookTweet about this on Twitter
error: Садржај је заштићен !!