请教一下为什么sendto的返回值一直是-1
简单做了个套接字的程序,但是sendto的返回值一直是-1
用GetLastError得到的返回值是10038,不知道代码哪里出错了,求前辈们帮帮忙,
WORD ver;
WSADATA wsadata;
SOCKET st=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addr;
int sd=0;
char buf[100]={0};
int error=0;
ver=MAKEWORD(1,1);
if(WSAStartup(ver,&wsadata)!=0)
{
printf("加载套接字失败\n");
return 0;
}
if(LOBYTE(wsadata.wVersion)!=1||
HIBYTE(wsadata.wVersion)!=1)
{
WSACleanup();
printf("版本错误\n");
return 0;
}
memset(&addr,0,sizeof(SOCKADDR));
addr.sin_family=AF_INET;
addr.sin_port=htons(7894);
addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
strcpy(buf,"hello world");
sd=sendto(st,buf,strlen(buf),0,(SOCKADDR *)&addr,sizeof(SOCKADDR));
error=GetLastError();
if(sd!=SOCKET_ERROR)
printf("发送成功,发送%d个字符\n",&sd);
else
printf("发送失败\n");
closesocket(st);
WSACleanup();
return 0;