这是我的tcp_server代码,请纠正我的错误。问题是我无法连接。


        int  tcp_server(unsigned int uiPort, unsigned int MaxConnect)
       {
        #define MAX_SOCKETS 1000
        int isocket = -1;
        struct sockaddr_in  servaddr;
        tcp_init();
        if (MaxConnect == 0)
        MaxConnect = MAX_SOCKETS;
        isocket = socket(AF_INET, SOCK_STREAM, 0);
        if (isocket >= 0){
         memset(&servaddr, 0, sizeof(servaddr));
         servaddr.sin_family = AF_INET;
         servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
         servaddr.sin_port = htons(uiPort);
         if( bind(isocket, (struct sockaddr*)&servaddr,   sizeof(servaddr)) == -1){
            tcp_close(isocket);
            isocket = -2;
         }else if( listen(isocket,MaxConnect ) == -1){
            tcp_close(isocket);
            isocket = -3;
         }
        }
        return isocket;
        }

最佳答案

您已接受客户端套接字的位置。

SOCKET cli_addr;
size_t len = sizeof(cli_addr);
newsockfd = accept(servaddr, (struct sockaddr *)&cli_addr,
                                &clilen);


然后在newsockfd上,您需要执行读/写操作。

您可以参考我的教程https://www.youtube.com/watch?v=hvcUVYC46mU。但是教程是关于WinSock的。

10-08 18:23