わかりましたので、UDP コードを機能させようとしていますが、C を使用したネットワーク プログラミングに関してはほとんど緑色ではありません。ここのサンプル ファイルを使用しています。
基本的に、特定のポートで着信 UDP パケットをリッスンしているだけで、同じ方法でデータを送り返したいと考えています。以下、該当部分です。
この時点で、ソケットがセットアップされ、選択したポートにバインドされ、着信パケットを待ちます。
printf("GSProxy: waiting to recvfrom...\n");
addr_len = (socklen_t) sizeof their_addr;
if ((numbytes = recvfrom(sockfd, buf, MAXBUFLEN-1 , 0,
(struct sockaddr *)&their_addr, &addr_len)) == -1) { // argument 6 gives a warning but is correct int
perror("recvfrom");
exit(1);
}
printf("GSProxy: got packet from %s\n",
inet_ntop(their_addr.ss_family,
get_in_addr((struct sockaddr *)&their_addr), s, sizeof s));
printf("GSProxy: packet is %d bytes long\n", numbytes);
buf[numbytes] = '\0';
printf("GSProxy: packet contains \"%s\"\n", buf);
char retmsg[] = "Hello!";
if ((numbytes = sendto(sockfd, retmsg, 7, 0,
(struct sockaddr *) &their_addr, &addr_len)) == -1) {
perror("GSPProxy: sendto");
exit(1);
}
printf("GSProxy: Sent %i bytes.\n", numbytes);
「こんにちは!」を送りたいだけです。送信者に文字列を返します。
これはエラー " GSPProxy: sendto: File name too long
" で失敗します。私が知る限り、[ENAMETOOLONG] エラー コードはどれですか。
しかし... **はどういう意味ですか? 何のファイル?長すぎるとは?
ソケットを再利用してデータを送り返すことができないということですか、それともまた新しい間違いを犯したのでしょうか?
よろしくお願いします、