J'ai ce morceau de code où un socket serveur est créé et est configuré pour écouter sur un numéro de port particulier, disons 5005. Maintenant, une fois que la fonction accept socket est retournée, le socket qui a été créé est copié dans la variable m_Socket et finalement je ferme le socket serveur nommé SocServer qui a été créé localement.
Maintenant, ma question Est-il possible que le SocServer (créé initialement) et le m_Socket (copié lorsque accept retourne) obtiennent le même nombre, disons 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);
}
est-il possible que Socserver et m_socket soient les mêmes car
Selon mon code, la connexion est établie et pour une raison quelconque, elle est fermée et dans TCPView, elle est affichée comme établie pendant un certain temps, puis plus de connexion du tout.
Note : Cela ne se produit que sur certaines machines et n'est pas toujours reproductible. Un autre problème lié au réseau peut-il en être la cause ?