我在 windows (c#) 上有一个 tcp 服务器应用程序,它接受端口 3000 的任何连接 我在 linux(ubuntu)(c++) 上有一个 tcp 客户端应用程序,它通过端口 3000 发送一个简单的文本
我在 windows 上也有一个客户端,在 linux 上有一个服务器,我可以完美地发送文本:从 linux 到 linux 从 windows 到 windows 从 windows 到 linux
问题是当我尝试从 linux 客户端发送到 windows 服务器时,我在 linux 上的 c++ 应用程序告诉我主机不存在
我已经检查了 IP 地址,这是正确的我也尝试用主机名来做
但它不起作用
有人知道为什么会这样吗???
这是我在客户端上的代码(linux-c++):
int sockfd, portno, n;
struct sockaddr_in serv_addr;
struct hostent *server;
struct in_addr addr={0};
char buffer[256];
if (argc < 3) {
fprintf(stderr,"usage %s hostname port\n", argv[0]);
exit(0);
}
portno = atoi(argv[2]);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR opening socket");
addr.s_addr=inet_addr(argv[1]);
//server=gethostbyname(argv[1]);
server = gethostbyaddr((char *) &addr, 4, AF_INET);
if (server == NULL) {
fprintf(stderr,"ERROR, no such host\n");
exit(0);
}
我打电话ping,一切正常
我在 Windows 上运行我的服务器并打开端口 3000 到任何连接
我尝试使用 windowsIP/windowsHostName 和端口 3000 运行我的客户端(上面的代码)(已经尝试过另一个端口)
问题出在:
server = gethostbyaddr((char *) &addr, 4, AF_INET);
服务器为空,因此它打印“错误,没有这样的主机”
但是ip是正确的。
当我使用相同的代码与 linux(c++) 上的服务器连接时,它可以工作