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);
サーバーがnullになるため、「ERROR、nosuchhost」と出力されます。
しかし、IPは正しいです。
Linux(c ++)上のサーバーと接続するために同じコードを使用すると、それは機能します