我已经使用下面的代码行创建了套接字。 现在我改变我得到这样的套接字的值套接字发送recv函数
m_Socket ++;
即使现在发送recv套接字函数成功,而不会抛出SOCKET_ERROR。 我期望它必须抛出错误。
我做错了什么。
struct sockaddr_in ServerSock; //绑定端口号套接字的地址结构,听
char *localIP ;
SOCKET SocServer;
//To Set up the sockaddr structure
ServerSock.sin_family = AF_INET;
ServerSock.sin_addr.s_addr = INADDR_ANY;
ServerSock.sin_port = htons(pLantronics->m_wRIPortNo);
// To Create a socket for listening on wPortNumber
if((SocServer = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
{
return FALSE;
}
//To bind the socket with wPortNumber
if(bind(SocServer,(sockaddr*)&ServerSock,sizeof(ServerSock))!=0)
{
return FALSE;
}
// To Listen for the connection on wPortNumber
if(listen(SocServer,SOMAXCONN)!=0)
{
return FALSE;
}
// Structure to get the IP Address of the connecting Entity
sockaddr_in insock;
int insocklen=sizeof(insock);
//To accept the Incoming connection on the wPortNumber
pLantronics->m_Socket=accept(SocServer,(struct sockaddr*)&insock,&insocklen);
if(pLantronics->m_Socket == INVALID_SOCKET)
{
shutdown(SocServer, 2);
closesocket(SocServer);
return FALSE;
}
// To make socket non-blocking
DWORD dwNonBlocking = 1;
if(ioctlsocket(pLantronics->m_Socket, FIONBIO, &dwNonBlocking))
{
shutdown(pLantronics->m_Socket, 2);
closesocket(pLantronics->m_Socket);
return FALSE;
}
pLantronics->m_sModemName = inet_ntoa(insock.sin_addr);
我现在
m_Socket++;//change to some other number ideally expecting send recv to fail.
即使现在发送的recv socket函数不抛出SOCKET_ERROR成功。 我期望它必须抛出错误。
我做错了什么。
你为什么要在++上套接字值?这完全是无意义的。这个问题的目的是什么? – INS 2010-06-16 09:51:35
你在哪个平台上?在visual studio 2008中调用m_Socket ++,然后用m_Socket做任何事情都会导致错误。另外,卢连说,为什么? – 2010-06-16 11:36:44