c++ - 创建相同的套接字

标签 c++ sockets

我有一段代码,其中创建了一个服务器套接字并设置为监听特定端口号,比如 5005。现在一旦接受套接字函数返回,创建的套接字将被复制到 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 的函数,因此我无法告诉您在处理传入连接时是否有任何问题。我不认为 m_socketSocServer 最终可能是一样的。

关于c++ - 创建相同的套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3044484/

相关文章:

c++ - 使用指针为文件 C++ 中的数字动态分配存储空间

c++ - 如何使用movntdqa避免缓存污染?

c# - 使用 C# 通过套接字发送和接收图像

linux - unix域套接字是否执行任何文件系统读写?

ruby - 在 ruby​​ 中发送和接收 TCP 数据

C++指针 vector <base_class*>放置派生类但切片打印

c++ - 俄语(或非拉丁语)文件名加载 Qt Windows

c++ - 为什么一个 HANDLE 不适用于 WriteConsoleInput,但适用于 WriteFile?

c++ - Boost.asio使用协程实现多个连接的echo服务器

c - 当用户键入其中一个箭头键时,从服务器端阻止客户端连接