我在 windows/c# 上有一个 TCP 客户端,在 linux/c++ 上有另一个客户端。我在两者上都有一个 TCP 服务器。
我在 windows/c# 上的 TCP 客户端工作正常,问题是 linux/c++ 上的 TCP 客户端
当我连接到 linux/c++ 上的 TCP 服务器时,它运行良好,但是当我尝试连接到 windows/c# 上的 TCP 服务器时,它没有连接,但 ping 正常。
这是失败的代码部分:
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 = gethostbyaddr((char *) &addr, 6, AF_INET);
if (server == NULL) {
fprintf(stderr,"ERROR, no such host\n");
exit(0);
问题在于:
server = gethostbyaddr((char *) &addr, 6, AF_INET);
它返回 null,所以它打印“错误,没有这样的主机”
我尝试了每一种组合:
-TCP客户端(linux)到TCP服务器(linux)
-TCP客户端(linux)到TCP服务器(windows)
-TCP客户端(windows)到TCP服务器(linux)
-TCP客户端(windows)到TCP服务器(windows)
一切正常,除了:TCP客户端(linux)到TCP服务器(windows)
我还尝试了 TCP 客户端 netcat(包含在 linux 上)到 TCP 服务器(windows),它可以工作。
我已经从 windows 到 linux 以及从 linux 到 windows 都调用了 ping,它收到 100%
我不知道为什么我的 TCP 客户端(linux)没有连接到 TCP 服务器(linux)