在看windows 网络编程第二版的时候看到的
绑定的地方不是很明白,感觉好像书上写错了
是不是应该绑定为 bind(ReceivingSocket, (SOCKADDR *)&ReceiverAddr, sizeof(ReceiverAddr));
那个SenderAddr地址结构是由recvfrom来填充的哦?#include <winsock2.h>void main(void)
{
   WSADATA              wsaData;
   SOCKET               ReceivingSocket;
   SOCKADDR_IN          ReceiverAddr;
   int                  Port = 5150;
   char                 ReceiveBuf[1024];
   int                  BufLength = 1024;
   SOCKADDR_IN          SenderAddr;
   int                  SenderAddrSize = sizeof(SenderAddr);
   
   // Initialize Winsock version 2.2   WSAStartup(MAKEWORD(2,2), &wsaData);
   
      // Create a new socket to receive datagrams on.
 
      ReceivingSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);      // Set up a SOCKADDR_IN structure that will tell bind that we
      // want to receive datagrams from all interfaces using port
      // 5150.      ReceiverAddr.sin_family = AF_INET;
      ReceiverAddr.sin_port = htons(Port);    
      ReceiverAddr.sin_addr.s_addr = htonl(INADDR_ANY);      // Associate the address information with the socket using bind.      bind(ReceivingSocket, (SOCKADDR *)&SenderAddr, sizeof(SenderAddr));   // At this point you can receive datagrams on your bound socket.
   recvfrom(ReceivingSocket, ReceiveBuf, BufLength, 0,
            (SOCKADDR *)&SenderAddr, &SenderAddrSize);   // When your application is finished receiving datagrams close
   // the socket.   closesocket(ReceivingSocket);   // When your application is finished call WSACleanup.   WSACleanup();
}