2 つの異なるネットワークに配置された 2 つの Linux マシンが次の構成を持つとします。
Node1 Node2
IPaddr(private) 192.168.0.14 10.25.3.75
Router modem's IP(real) 1.2.3.4 5.6.7.8
Netmask (real) 255.255.0.0 255.255.192.0
Router modem's IP(priv) 192.168.0.1 10.0.20.1
Netmask (priv) 255.255.255.0 255.0.0.0
以下は、一般的な UDP (クライアント) ソケット コードですC
(質問のスペースを節約するために、エラー チェックは含まれていません)。で以下を実行できると仮定しますnode1
。私の質問は、以下のコードで をどのように定義する必要があるか、および UDP パケットが問題なく配信されるように他に何を編集する必要があるかということです。node2
node1 to node2
#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#define SRV_IP "5.6.7.8"
int main(){
struct sockaddr_in serv_addr;
int sockfd, i, slen=sizeof(serv_addr);
char buf[512] = "hello";
sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
bzero(&serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(1234);
inet_aton(SRV_IP, &serv_addr.sin_addr);
sendto(sockfd, buf, BUFLEN, 0, (struct sockaddr*)&serv_addr, slen);
close(sockfd);
return 0;
}
UDP サーバー部分 ( on node2
) は一般的なコードであり、 からパケットを受信するために特定の変更を行う必要はnode1
ないと思いますよね?