使用しているパソコンのIPアドレスは,ターミナルで「/sbin/ifconfig」とコマンドを入 力すれば得られる.コマンドの実行結果は,次のようになり,eth0のinet addr:IPアドレスとなる.この場合のIPアドレスは,192.169.1.61である.
eth0 Link encap:Ethernet HWaddr 00:20:ED:5B:3E:F2 inet addr:192.168.1.61 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::220:edff:fe5b:3ef2/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:6220 errors:0 dropped:0 overruns:0 frame:0 TX packets:5403 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:6446053 (6.1 MiB) TX bytes:627205 (612.5 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:2507 errors:0 dropped:0 overruns:0 frame:0 TX packets:2507 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:3116664 (2.9 MiB) TX bytes:3116664 (2.9 MiB)
1 #include <stdio.h> 2 #include <string.h> 3 #include <sys/types.h> 4 #include <sys/socket.h> 5 #include <netinet/in.h> 6 #include <arpa/inet.h> 7 8 int main(int argc, char *argv[]) 9 { 10 struct sockaddr_in server; 11 char message[80], ip_address[16],m[80]; 12 int t; 13 14 strcpy(ip_address,argv[1]); 15 16 memset((char *) &server, 0, sizeof(server)); 17 server.sin_family=AF_INET; 18 server.sin_port = htons(5320); 19 server.sin_addr.s_addr=inet_addr(ip_address); 20 t=socket(AF_INET, SOCK_STREAM, 0); 21 connect(t, (struct sockaddr *) &server, sizeof(server)); 22 23 printf("message:"); 24 fgets(message, 80, stdin); 25 send(t, message, strlen(message),0); 26 27 close(t); 28 29 return 0; 30 }
1 #include <stdio.h> 2 #include <string.h> 3 #include <sys/types.h> 4 #include <sys/socket.h> 5 #include <sys/socket.h> 6 #include <netinet/in.h> 7 #include <arpa/inet.h> 8 9 int main(void) 10 { 11 struct sockaddr_in client, server; 12 char buf[80]; 13 int t, r, k; 14 t=socket(AF_INET, SOCK_STREAM, 0); 15 memset((char *) &server, 0, sizeof(server)); 16 server.sin_family=AF_INET; 17 server.sin_addr.s_addr = htonl(INADDR_ANY); 18 server.sin_port = htons(5320); 19 bind(t, (struct sockaddr *) &server, sizeof(server)); 20 k=sizeof(client); 21 listen(t, 1); 22 23 24 while(1){ 25 r=accept(t, (struct sockaddr *) &client, &k); 26 recv(r, buf, 80, 0); 27 printf("%s",buf); 28 memset(buf,0,80); 29 } 30 31 close(t); 32 close(r); 33 34 return 0; 35 }
ただし,クライアントのプログラムは通信先のIPアドレスを引数にして起動する.例えば, クライアントプログラムの実行ファイル名がcliで,通信相手先のIPアドレスが 192.168.1.51とすると,次のように起動する.
./cli 192.168.1.51