我在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;
}
答案 0 :(得分:0)
如果服务器和客户端都在同一台机器上,我猜你的系统工作正常吗?
在您的客户端代码中,您有
行SocketClient client("127.0.0.1", port);
您还没有给出SocketClient
的代码,但我猜这是服务器的地址和端口?如果是,那么您的问题是您需要提供服务器的IP地址:127.0.0.1
是localhost
,或此计算机。