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]; 12 int fd; 13 14 strcpy(ip_address,argv[1]); // コマンドライン引数のIPアドレスのコピー 15 fd=socket(PF_INET, SOCK_STREAM, 0); // ソケットの作成 16 17 memset((char *) &server, 0, sizeof(server)); // アドレス構造体の初期化 18 server.sin_family=AF_INET; 19 server.sin_port = htons(5320); 20 server.sin_addr.s_addr=inet_addr(ip_address); 21 connect(fd, (struct sockaddr *) &server, sizeof(server)); 22 23 24 while(1){ 25 printf("message:"); 26 fgets(message, 80, stdin); 27 if(strncmp(message,"bye",3)==0)break; 28 send(fd, message, strlen(message),0); 29 } 30 31 close(fd); 32 33 return 0; 34 }
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 read_str[80]; 13 int fds, fda, length; 14 fds=socket(PF_INET, SOCK_STREAM, 0); 15 memset((char *) &server, 0, sizeof(server)); 16 17 server.sin_family=AF_INET; 18 server.sin_addr.s_addr = htonl(INADDR_ANY); 19 server.sin_port = htons(5320); 20 bind(fds, (struct sockaddr *) &server, sizeof(server)); 21 22 listen(fds, 1); 23 24 length=sizeof(client); 25 26 fda=accept(fds, (struct sockaddr *) &client, &length); 27 28 while(1){ 29 int rn; 30 rn = recv(fda, read_str, 80, 0); 31 printf("%d\n",rn); 32 printf("%s",read_str); 33 } 34 35 close(fda); 36 close(fds); 37 38 return 0; 39 }
通信を行うためには,通信相手のコンピューターとプログラムを特定しなくてはならない.
IPアドレスを指定することで,コンピューターを特定する.通信するプログラムはポート
番号により決める.コンピューターは多くの通信を同時に行っており,通信をするプログ
ラムまで指定しなくてはならない.