我已經使用下面的代碼行創建了套接字。 現在我改變我得到這樣的套接字的值套接字發送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