UDP出错,懂winsock编程的进来看看
本帖最后由 lghe001 于 2013-07-12 20:29:02 编辑
#include <winsock2.h>
#include <stdio.h>
#pragma comment(lib, "WS2_32.lib")
void main(void)
{
WSADATA wsaData;
SOCKET ReceivingSocket;
SOCKADDR_IN ReceiverAddr;
int Port = 6000;
char ReceiveBuf[1024];
int BufLength = 1024;
SOCKADDR_IN SenderAddr;
int SenderAddrSize = sizeof(SenderAddr);
if(WSAStartup(MAKEWORD(2,2), &wsaData))
{
printf("ERROR:%d\n",WSAGetLastError());
return;
}
// Create a new socket to receive datagrams on.
ReceivingSocket = socket(AF_INET, SOCK_DGRAM, 0);
ReceiverAddr.sin_family = AF_INET;
ReceiverAddr.sin_port = htons(Port);
ReceiverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind(ReceivingSocket, (SOCKADDR *)&SenderAddr, sizeof(SenderAddr)) == SOCKET_ERROR)
{
printf("ERROR:%d\n",WSAGetLastError());
return;
}
SOCKADDR_IN ClientAddr;
recvfrom(ReceivingSocket, ReceiveBuf, BufLength, 0,(SOCKADDR *)&ClientAddr, &SenderAddrSize);
closesocket(ReceivingSocket);
WSACleanup();
}
一到bind那就返回0x0000273f 使用了与请求的协议不兼容的地址。 unsigned long
不知是哪里设错了?
[解决办法]
SenderAddr.sin_family = AF_INET;
SenderAddr.sin_port = htons(Port);
SenderAddr.sin_addr.s_addr = htonl(INADDR_ANY);
不解释
[解决办法]
if(bind(ReceivingSocket, (SOCKADDR *)&SenderAddr, sizeof(SenderAddr)) == SOCKET_ERROR)