sending 01 c IP127 0 0 1 sending

  • Slides: 22
Download presentation

送信側プログラム sending 01. c 自己ホストのIPアドレスは 127. 0. 0. 1 // sending 01. c #include <sys/types. h>

送信側プログラム sending 01. c 自己ホストのIPアドレスは 127. 0. 0. 1 // sending 01. c #include <sys/types. h> #include <sys/socket. h> #include <netinet/in. h> ポート番号 12345 sendto(. . , “HELLO”, 5, …) でHELLOが送信データ、 5は送信データのデータ長 #define Err( x) { printf(“%sn”, x); exit(1); } int main() { int sock; struct sockaddr_in addr; // ソケット作成 sock = socket(AF_INET, SOCK_DGRAM, 0); if(sock < 0) Err("socket"); // ソケットに名前 addr. sin_family = AF_INET; addr. sin_port = htons(12345); addr. sin_addr. s_addr = inet_addr("127. 0. 0. 1"); sendto(sock, "HELLO", 5, 0, (struct sockaddr *)&addr, sizeof(addr)); close(sock); return 0; } 12 All Rights Reserved, Copyright © 明星大学

受信側プログラム receiving 01. c // receiving 01. c #include <stdio. h> #include <sys/types. h> #include

受信側プログラム receiving 01. c // receiving 01. c #include <stdio. h> #include <sys/types. h> #include <sys/socket. h> #include <netinet/in. h> int main() { int sock; struct sockaddr_in addr; char buf[2048]; sock = socket(AF_INET, SOCK_DGRAM, 0); addr. sin_family = AF_INET; addr. sin_port = htons(12345); addr. sin_addr. s_addr = INADDR_ANY; bind(sock, (struct sockaddr *)&addr, sizeof(addr)); memset(buf, 0, sizeof(buf)); recv(sock, buf, sizeof(buf), 0); printf("%sn", buf); close(sock); return 0; } 14 All Rights Reserved, Copyright © 明星大学

サーバプログラム 2 sending 02. c(ブロードキャストの例) // sending 02. c #include <sys/types. h> #include <sys/socket. h>

サーバプログラム 2 sending 02. c(ブロードキャストの例) // sending 02. c #include <sys/types. h> #include <sys/socket. h> #include <netinet/in. h> #define Err( x) { printf("%sn", x); exit(1); } ブロードキャストのIPアドレスは 192. 168. 253. 255 int main() { int sock; エラー処理を省略 int n; sending 02. c と receiving 02. c で動作を確認しなさい int yes=1; struct sockaddr_in addr; (sending 02 を 10回実行、10人で各人 1回実行) // ソケット作成 sock = socket(AF_INET, SOCK_DGRAM, 0); if(sock < 0) Err("socket"); // ソケットに名前 addr. sin_family = AF_INET; addr. sin_port = htons(12345); inet_pton(AF_INET, "255. 255", &addr. sin_addr. s_addr); setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char*)&yes, sizeof(yes)); n = sendto(sock, "Test of broadcast", 17, 0, (struct sockaddr *)&addr, sizeof(addr)); close(sock); return 0; } 16 All Rights Reserved, Copyright © 明星大学

受信側プログラム receiving 02. c(10個のデータを受信する) // receiving 02. c #include <stdio. h> #include <sys/types. h> #include

受信側プログラム receiving 02. c(10個のデータを受信する) // receiving 02. c #include <stdio. h> #include <sys/types. h> #include <sys/socket. h> #include <netinet/in. h> int main() { int sock, ix; struct sockaddr_in addr; char buf[2048]; sock = socket(AF_INET, SOCK_DGRAM, 0); addr. sin_family = AF_INET; addr. sin_port = htons(12345); addr. sin_addr. s_addr = INADDR_ANY; bind(sock, (struct sockaddr *)&addr, sizeof(addr)); memset(buf, 0, sizeof(buf)); for(ix=0; ix<10; ix++){ recv(sock, buf, sizeof(buf), 0); printf("%sn", buf); } close(sock); return 0; } 17 All Rights Reserved, Copyright © 明星大学