使用しているパソコンの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