Example: quiz answers

UDP通信の基礎 - sbcr.jp

1. Chapter 3. 2. 3. UDP 4. UDP .. 5.. DNS query .. Chapter 3 UDP . 6.. 7. 69 1:35:11 PM. Chapter3 UDP 3-2 UDP . UDP TCP . 3-1 UDP UDP . IP VoIP Voice over IP . 1.. TCP UDP UDP TCP . UDP . TCP UDP .. UDP 2. TCP . UDP . UDP NAPT NAT NAT . TCP UDP STUN Simple Traversal / of UDP through NATs . 3. TCP .. TCP NAT P2P .. Chapter 1 IP . 3-1 .. 3-2 UDP 4. TCP . UDP . UDP TCP .. UDP / . UDP . UDP . 5. TCP 3-1 .. TCP . TCP . 6. UDP UDP TCP . UDP . TCP . UDP .. 7. 3-1 IPv6 IPv6 .. 70 71. 70-71 1:35:12 PM. Chapter3 UDP 3-2 UDP . 3-1 UDP List 3-1 recvfrom . UDP UDP #include < >. #include < >. socket() socket() 1.. ssize_t recvfrom(. int s, / /. void buf, / /.. size_t len, / buf /. IP IP int flags, / /. struct sockaddr from, / sockaddr /. socklen_t fromlen / from / 2. );. bind().. List 3-2 recv . #include < >. recv( ) sendto() #include < >. 3. ssize_t recv(. int s, / /. close() close( ). void buf, / /. size_t len, / buf /. int flags / /.)

Chapter3 UDP通信の基礎 70 71 3-2 UDPのプログラミング 1 3 2 4 5 6 7 3-1 UDPの特徴とプログラミング ネットワークプログラミングでTCPの次に多い通信方法がUDPだと思われます。

Tags:

  Sbcr

Information

Domain:

Source:

Link to this page:

Please notify us if you found a problem with this document:

Other abuse

Transcription of UDP通信の基礎 - sbcr.jp

1 1. Chapter 3. 2. 3. UDP 4. UDP .. 5.. DNS query .. Chapter 3 UDP . 6.. 7. 69 1:35:11 PM. Chapter3 UDP 3-2 UDP . UDP TCP . 3-1 UDP UDP . IP VoIP Voice over IP . 1.. TCP UDP UDP TCP . UDP . TCP UDP .. UDP 2. TCP . UDP . UDP NAPT NAT NAT . TCP UDP STUN Simple Traversal / of UDP through NATs . 3. TCP .. TCP NAT P2P .. Chapter 1 IP . 3-1 .. 3-2 UDP 4. TCP . UDP . UDP TCP .. UDP / . UDP . UDP . 5. TCP 3-1 .. TCP . TCP . 6. UDP UDP TCP . UDP . TCP . UDP .. 7. 3-1 IPv6 IPv6 .. 70 71. 70-71 1:35:12 PM. Chapter3 UDP 3-2 UDP . 3-1 UDP List 3-1 recvfrom . UDP UDP #include < >. #include < >. socket() socket() 1.. ssize_t recvfrom(. int s, / /. void buf, / /.. size_t len, / buf /. IP IP int flags, / /. struct sockaddr from, / sockaddr /. socklen_t fromlen / from / 2. );. bind().. List 3-2 recv . #include < >. recv( ) sendto() #include < >. 3. ssize_t recv(. int s, / /. close() close( ). void buf, / /. size_t len, / buf /. int flags / /.)

2 ;. 4. flags . UDP MSG_CMSG_CLOEXEC. MSG_DONTWAIT. UDP UDP MSG_ERRQUEUE. 5. MSG_OOB. UDP IP UDP MSG_PEER. MSG_TRUNC. MSG_WAITALL.. IP 6. bind . man 2 recvfrom . fromlen IN OUT . recv recvfrom fromlen from from . UDP recvfrom from fromlen . recv recv recvfrom -1 . errno . 7. recvfrom recv UDP recvfrom .. 72 73. 72-73 1:35:14 PM. Chapter3 UDP 3-2 UDP .. List 3-3 UDP . UDP . 1. #include < >. #include < > UDP IP UDP . #include < >.. #include < >. #include < >.. int main(). 2. {. int sock; UDP sendto . struct sockaddr_in addr;. struct sockaddr_in senderinfo; send . socklen_t addrlen; sendto send . char buf[2048];. int n;. List 3-4 sendto 3. sock = socket(AF_INET, SOCK_DGRAM, 0); 1 #include < >. #include < >. = AF_INET;. = htons(12345); ssize_t sendto(. 2. = INADDR_ANY; int s, / /. bind(sock, (struct sockaddr )&addr, sizeof(addr)); const void buf, / /. size_t len, / buf / 4. addrlen = sizeof(senderinfo); 3 int flags, / /. n = recvfrom(sock, buf, sizeof(buf) - 1, 0, const struct sockaddr to, / sockaddr /.))}

3 (struct sockaddr )&senderinfo, socklen_t tolen / to /. );. write(fileno(stdout), buf, n);. close(sock); 4. List 3-5 send . 5. return 0; #include < >. } #include < >. ssize_t send(. UDP UDP int s, / /. const void buf, / /. Chapter 2 TCP .. size_t len, / buf / 6. int flags / /. IPv4 UDP 1 AF_INET SOCK_DGRAM );. IPv4 UDP UDP . sockaddr_in 2 bind send connect . 3 recvfrom sizeof buf write . 1 1 \0 send write flags 7. printf % s flags 0 send write . 4 flags . 74 75. 74-75 1:35:14 PM. Chapter3 UDP 3-2 UDP . MSG_CONFIRM .. IPv4 . MSG_DONTROUTE . MSG_DONTWAIT. List 3-6 UDP . 1. MSG_EOR. MSG_MORE #include < >. MSG_NOSIGNAL #include < >. #include < >. MSG_OOB #include < >. #include < >. flags . int 2. main(int argc, char argv[]). sendto send -1 {. int sock;. errno errno struct sockaddr_in addr;. int n;. 3-2 sendto send errno man 2 sendto . if (argc != 2) { 3. errno fprintf(stderr, "Usage : %s dstipaddr\n", argv[0]);. EACCES return 1.}

4 }. EAGAIN EWOULDBLOCK . sock = socket(AF_INET, SOCK_DGRAM, 0); 1. EBADF . ECONNRESET = AF_INET; 2. EDESTADDRREQ connection-mode = htons(12345); 4. inet_pton(AF_INET, argv[1], & );. EFAULT . EINTR n = sendto(sock, "HELLO", 5, 0, (struct sockaddr )&addr, sizeof(addr)); 3. if (n < 1) {. EINVAL . perror("sendto");. EISCONN 3-2 return 1;. EMSGSIZE .. } 5. ENOBUFS 3-3 close(sock); 4. ENOMEM . return 0;. ENOTCONN . }. ENOTSOCK s . EOPNOTSUPP flags . EPIPE MSG_NOSIG UDP UDP 6. NAL SIGPIPE . UDP . IPv4 UDP 1 . AF_INET+SOCK_DGRAM . UDP UDP IPv4 UDP . connect sendto 2 .. localhost UDP . 3-2 7. IP . 3-3 congestion) . Linux . HELLO 5 3 . 2 . sockaddr_in 4 . 76 77. 76-77 1:35:15 PM. Chapter3 UDP 3-2 UDP . UDP UDP . printf("getaddrinfo : %s\n", gai_strerror(err));. UDP return 1;. UDP }. 1. sock = socket(res->ai_family, res->ai_socktype, 0); 2. if (sock < 0) {. perror("socket");. return 1;. getaddrinfo UDP }. {. const char ipverstr.

5 2. inet_pton IPv4/IPv6 switch (res->ai_family) {. case AF_INET: ipverstr = "IPv4";. break;. IPv4/IPv6 getaddrinfo case AF_INET6: ipverstr = "IPv6"; 3. break; 3. UDP default: ipverstr = "unknown";. UDP break;. }. List 3-7 getaddrinfo UDP printf("%s\n", ipverstr);. }. #include < >. #include < > n = sendto(sock, "HELLO", 5, 0, res->ai_addr, res->ai_addrlen); 4 4. #include < > if (n < 1) {. #include < > perror("sendto");. #include < > return 1;. #include < > }. #include < >. close(sock); 5. int freeaddrinfo(res);. main(int argc, char argv[]). 5. { return 0;. int sock; }. struct addrinfo hints, res;. int n;. int err; AF_UNSPEC SOCK_DGRAM getaddrinfo 1 . AF_UNSPEC . IPv4/IPv6 AF_UNSPEC AF_INET IPv4 . if (argc != 2) { 6. fprintf(stderr, "Usage : %s dst\n", argv[0]); AF_INET6 IPv6 getaddrinfo . return 1;.. }. 2 getaddrinfo . / IP / getaddrinfo IPv4/IPv6 . memset(&hints, 0, sizeof(hints));. IPv4 IPv6 printf . = AF_UNSPEC; / IPv4/IPv6 / 1.

6 = SOCK_DGRAM; 3 . 7. err = getaddrinfo(argv[1], "12345", &hints, 4 getaddrinfo sendto . if (err != 0) {. getaddrinfo addrinfo . 5 . freeaddrinfo close . 78 79. 78-79 1:35:16 PM. Chapter3 UDP 3-2 UDP . UDP AI_PASSIVE getaddrinfo 1 getaddrinfo . socket bind 2 .. getaddrinfo 3 . recv . 1. List 3-8 getaddrinfo UDP . 4 . #include < >. #include < >. IPv6 . #include < >. #include < >. #include < >. #include < > 2. #include < > List 3-7 getaddrinfo . sendto IPv6 . int main() getaddrinfo IPv6 sendto . { IPv4 IPv6 . int sock;. sendto . struct addrinfo hints, res;. 3. int err, n; getaddrinfo Chapter 2 TCP getad char buf[2048];. drinfo getaddrinfo connect . memset(&hints, 0, sizeof(hints)); UDP TCP con = AF_INET; / IPv4 / 1 nect connect sendto . = SOCK_DGRAM;.. = AI_PASSIVE;. err = getaddrinfo(NULL, "12345", &hints, sendto close 4. if (err != 0) { . printf("getaddrinfo : %s\n", gai_strerror(err));. return 1;. } List 3-9 IPv6 . #include < >.))}}

7 Sock = socket(res->ai_family, res->ai_socktype, 0); 2 #include < >. if (sock < 0) {. perror("socket");. #include < > 5. #include < >. return 1; #include < >. } #include < >. #include < >. if (bind(sock, res->ai_addr, res->ai_addrlen) != 0) {. perror("bind"); int return 1; main(int argc, char argv[]). } { 6. int sock;. freeaddrinfo(res); 3 struct addrinfo hints, res0, res;. int n;. memset(buf, 0, sizeof(buf)); int err;. n = recv(sock, buf, sizeof(buf), 0); 4. if (argc != 2) {. printf("%s\n", buf); fprintf(stderr, "Usage : %s dst\n", argv[0]);. return 1; 7. close(sock); }. return 0; / IP /. }. 80 81. 80-81 1:35:17 PM. Chapter3 UDP 3-3 . 3-3. memset(&hints, 0, sizeof(hints));.. = AF_UNSPEC; / IPv4/IPv6 / 1. = SOCK_DGRAM;. err = getaddrinfo(argv[1], "12345", &hints, 1. if (err != 0) {. printf("getaddrinfo : %s\n", gai_strerror(err));. return 1;.. }.. for (res = res0; res != NULL; res = res->ai_next) { 2. sock = socket(res->ai_family, res->ai_socktype, 0); 3.)}

8 2. if (sock < 0) {. perror("socket"); . return 1;. }. UDP . n = sendto(sock, "HELLO", 5, 0, res->ai_addr, res->ai_addrlen); 4. if (n < 1) { 3. perror("sendto"); 1 IP IP . } 2 setsockopt SO_BROADCAST setsockopt . Chapter 6 . close(sock); 5. if (n > 0) { UDP setsock break; 6. } opt SO_BROADCAST 4. } . sendto . freeaddrinfo(res0);.. return 0;. } List 3-10 . 5. #include < >. getaddrinfo addrinfo #include < >. #include < >. 1 AF_UNSPEC IPv4 IPv6 . #include < >. SOCK_DGRAM UDP #include < >. 2 getaddrinfo for for #include < >. sendto int 6. for getaddrinfo main(). 3 sendto 4 {. int sock;. close 5 struct sockaddr_in addr;. sendto for 6 int yes = 1;. int n;. sock = socket(AF_INET, SOCK_DGRAM, 0); 7. = AF_INET;. = htons(12345);. 82 83. 82-83 1:35:18 PM. Chapter3 UDP 3-3 . 3-3 . inet_pton(AF_INET, " ", & );. if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char )&yes, sizeof(yes)) != 0) { 1. perror("setsockopt");. return 1;. }. n = sendto(sock, "HELLO", 5, 0, (struct sockaddr )&addr, sizeof(addr)).

9 If (n < 1) {. perror("sendto");. return 1;. 2. }. close(sock);. return 0;. }. 3. Chapter . UDP List 3-3 . DoS Denial of Service . UDP .. IP .. 4.. 3-2 . COLUMN. DoS. 5. IP . ICMP Echo DoS .. IP ICMP Echo . ICMP Echo . ICMP Echo 6.. 7. IP . 1 .. 84 85. 84-85 1:35:25 PM. Chapter3 UDP 3-4 . 3-4. return 1;.. }. close(sock); 1. return 0;. }.. setsockopt . IP 2. 1-4 Chapter 13 sendto . IP_MULTI. CAST_IF setsockopt IP_MULTICAST_IF Chapter 13 . IPv6 socket . AF_INET AF_INET6 sockaddr_in sockaddr_in6 . 3. IPv6 . IPv6 .. 4.. List 3-11 . #include < > . #include < >.. #include < >. #include < > getaddrinfo getaddrinfo inet_pton #include < > IPv6 . 5. int getaddrinfo . main(). { List 3-12 . int sock;. struct sockaddr_in addr; #include < >. #include < >. int n;. #include < >. 6. sock = socket(AF_INET, SOCK_DGRAM, 0); #include < >. #include < >. = AF_INET; #include < >. = htons(12345); #include < >. inet_pton(AF_INET, " ", & );. int n = sendto(sock, "HELLO", 5, 0, (struct sockaddr )&addr, sizeof(addr)); main() 7.

10 If (n < 1) { {. perror("sendto"); int sock;. struct addrinfo hints, res;. 86 87. 86-87 1:35:26 PM. Chapter3 UDP 3-4 . int err, n; memset(buf, 0, sizeof(buf));. struct group_req greq; n = recv(sock, buf, sizeof(buf), 0);. char buf[2048];. printf("%s\n", buf); 1. memset(&hints, 0, sizeof(hints));. = AF_INET; close(sock);. = SOCK_DGRAM;. = AI_PASSIVE; return 0;. err = getaddrinfo(NULL, "12345", &hints, }. if (err != 0) {. printf("getaddrinfo : %s\n", gai_strerror(err));. 2. return 1; . }. JOIN IPPROTO_IP. sock = socket(res->ai_family, res->ai_socktype, 0); MCAST_JOIN_GROUP setsockopt . if (sock < 0) { MCAST_JOIN_GROUP group_req /usr/include/ . perror("socket");. return 1; . } 3. List 3-13 group_req . if (bind(sock, res->ai_addr, res->ai_addrlen) != 0) {. perror("bind"); / Multicast group request. /. return 1; struct group_req } {. uint32_t gr_interface; / /. freeaddrinfo(res); struct sockaddr_storage gr_group; / /. }; 4.)}


Related search queries