У меня есть этот фрагмент кода, где создается сокет сервера, и он настроен на прослушивание определенного номера порта, скажем, 5005. Теперь, когда функция accept socket возвращает созданный сокет, он копируется в переменную m_Socket и, наконец, я завершаю работу.сокет сервера с именем SocServer, который был создан локально.
Теперь мой вопрос Возможно ли, чтобы SocServer (созданный изначально) и m_Socket (скопированный, когда принимают возврат) получили одно и то же число, скажем 1500.
struct sockaddr_in ServerSock; // Socket address structure to bind the Port Number to listen to
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(PortNumber);//port number of 5005
// To Create a socket for listening on PortNumber
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
m_Socket=accept(SocServer,(struct sockaddr*)&insock,&insocklen);
//delete the server socket
if(SocServer != INVALID_SOCKET)
{
//To close and shutdown the Socserver
shutdown(SocServer, 2 );
closesocket(SocServer);
}
возможно, что Socserver и m_socket одинаковы, потому что
согласно моему коду, соединение с сокетом установлено, и по какой-то другой причине оно закрывается, и в TCPView оно показывает установленное на некоторое время, а затем нет соединениявообще.
Примечание: это происходит только на некоторых машинах и не всегда воспроизводимо.Может быть причиной любой другой проблемы, связанной с сетью.