У меня есть эта часть кода, в которой создается сокет сервера, и он настроен на прослушивание определенного номера порта 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 он показывается установленным на некоторое время, а затем нет соединения вообще.
Примечание: Это происходит только на некоторых машинах и не воспроизводится всегда. Может быть причиной любой другой проблемы, связанной с сетью.
Вы обеспокоены тем, что ваш m_Socket может быть закрыт, когда вы вызываете shutdown на Socserver? – Default
Вы скоро вызываете WSACleanup? Я также попытался описать программирование сокетов: http://stackoverflow.com/questions/2843277/c-winsock-p2p/2920787#2920787 – Default
@ Майкл, я не могу слишком много жаловаться на код. Это устаревшая часть кода, над которой я сейчас работаю. Я не называю WSACleanup слишком рано. Так что это правит. И да, я беспокоюсь, что m_Socket может быть закрыт, когда я вызываю shutdown на SocServer. – ckv