sendto函数返回值总是-1,这种情况只是发送端有问题,还是说接收端也会导致发送失败
void Socket::Socket_init()
{
//加载套接字
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested=MAKEWORD(1,1);
err=WSAStartup(wVersionRequested,&wsaData);
if (err!=0)
{
//return TRUE;
}                       
if (LOBYTE(wsaData.wVersion) !=1||
HIBYTE(wsaData.wVersion) !=1)
{
WSACleanup();
//return TRUE;
}
//创建套接字
SOCKET sockSrv_S=socket(AF_INET,SOCK_DGRAM,0);

addrClient_R.sin_addr.S_un.S_addr=inet_addr("192.168.1.227");
addrClient_R.sin_family=AF_INET;
addrClient_R.sin_port=htons(3000);

}int Socket::Socket_send()
{
len=sizeof(SOCKADDR);
    return(sendto(sockSrv_S,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrClient_R,len));

}
    int ns;
    socket.Socket_init();
sendBuf[0]='s';
ns=socket.Socket_send();
帮我看一下呀!

解决方案 »

  1.   

    GetLastError先看错误信息,然后来分析
      

  2.   

    GetLastError()返回值是10038,怎么查看呢?
      

  3.   

    GetLastError看看错误时什么?
    是不是没bind?
      

  4.   

    An operation was attempted on something that is not a socket. Either the socket handle parameter did not reference a valid socket, or for select, a member of an fd_set was not valid.
    他说你用的socket不是套接字,你看看socket函数返回值是啥
      

  5.   

    sockSrv_S=socket(AF_INET,SOCK_DGRAM,0);的返回值是3356,看套接字的创建过程也没啥错啊!
      

  6.   

    如果是服务器端的话一定要bind一下才可以……
      

  7.   

    当我创建两个SOCKET端口后没选择I/O模型,怎么recvfrom()就不阻塞了,返回值为-1.我发送端 还没发,这边就返回了,难道自动成异步模式 了?
      

  8.   

    SOCKET sockSrv_S=socket(AF_INET,SOCK_DGRAM,0);
    你这个创建的是一个临时的socket
    按你这样的,需要是一个全局的
      

  9.   

    楼上说的对,是这的问题。现在又出现了recvfrom()不阻塞,我这边还没发,接收端就返回了,很怪!