客户端无法连接到LAN中的服务器程序

时间:2016-06-18 12:31:59

标签: c++ windows sockets server lan

我在C ++中有这个类构造函数:

SocketServer::SocketServer(int port)
{
    this->port=port;

WSAStartup(MAKEWORD(2,0), &WSAData);
server = socket(AF_INET, SOCK_STREAM, 0);

addr.sin_addr.s_addr = htonl(INADDR_ANY);
addr.sin_family = AF_INET;
addr.sin_port = htons(port);

bind(server, (SOCKADDR *)&addr, sizeof(addr));
}

端口号为的客户端应用程序。 5555无法连接到LAN网络中另一台PC上的服务器程序。我试过不同的端口号。太。怎么解决这个?错误消息是:

Error while connecting

:这是client.cpp:

 #include <iostream>
#include <fstream>
#include "SocketClient.h"

using namespace std;

void onError(errorStruct *e)
{
    cout << e->message << endl;
}

int main()
{
    int port;
    cout<<"Enter a port : ";
    cin>>port;
    SocketClient client("127.0.0.1", port);
    client.setErrorCallback(onError);
   client.connect();

string str;
while(1)
{
    cout << ">";
    getline(cin, str);
    client.send(str);
}

client.close();
}

编辑2:SocketClient

SocketClient::SocketClient(std::string ip, int port)
{
    this->ip=ip;
    this->port=port;
    this->connected=false;
    initParameters();
    initSocket(ip, port);
}

void SocketClient::initSocket(std::string ip, int port)
{
    WSAStartup(MAKEWORD(2,0), &WSAData);
    this->socket = WINSOCK_API_LINKAGE::socket(AF_INET, SOCK_STREAM, 0);
    this->addr.sin_addr.s_addr = inet_addr(ip.c_str());
    this->addr.sin_family = AF_INET;
    this->addr.sin_port = htons(port);
}

void SocketClient::initParameters()
{
    this->bytes_for_package_size=16;
    this->size_of_packages=2048;
    this->callback=NULL;
    this->callbackError=NULL;
    this->thread_started=false;
    this->errorWhileReceiving=false;
    this->errorWhileSending=false;
}

1 个答案:

答案 0 :(得分:0)

如果服务器和客户端都在同一台机器上,我猜你的系统工作正常吗?

在您的客户端代码中,您有

SocketClient client("127.0.0.1", port);

您还没有给出SocketClient的代码,但我猜这是服务器的地址和端口?如果是,那么您的问题是您需要提供服务器的IP地址:127.0.0.1localhost,或计算机。