teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

質問の説明文を追加

2021/12/02 06:31

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,35 @@
1
1
  以下のサンプルプログラムを改良して各自の環境で1つのUDPデータグラムで送受信可能なUDPペイロードのサイズが何バイトであるか求める課題があるのですがどのようにすればいいでしょうか。
2
- 環境はLinuxのターミナルです。
3
2
 
3
+ 追記:肝心なことを書いていませんでした。
4
+ すみません。
5
+ EchoStringLenに着目していたのですが具体的にどのようなことをすればUDPペイロードのサイズを計れるかが調べはしたのですがどうしても分かりませんでした。
6
+
7
+ 1人の回答者様の回答を参考に
8
+ UDPEchoClient.cを変えてみました。
9
+ ありがとうございました。
10
+
4
11
  ```c
12
+ //UDPEchoClientを改造
13
+ //...
14
+ memset(&servAddr, 0, sizeof(servAddr));
15
+ servAddr.sin_family = AF_INET;
16
+ servAddr.sin_addr.s_addr = inet_addr(servIP);
17
+ servAddr.sin_port = htons(servPort);
18
+ //ここから
19
+ for(echoStringLen = 1; echoStringLen < 65536; echoStringLen++){
20
+ sendMsgLen = sendto(sock, echoString, echoStringLen, 0, (struct sockaddr*)&servAddr, sizeof(servAddr));
21
+ if(sendMsgLen == -1){
22
+ printf("%d\n",echoStringLen);
23
+ break;
24
+ }
25
+ }
26
+ //ここまで
27
+ //...
28
+ ```
29
+ 実行してみたところ4399という数字がクライアント側に表示されましたが、大きな間違いはないでしょうか。
30
+ 以下サンプルプログラム
31
+
32
+ ```c
5
33
  //UDPEchoServer.c
6
34
  #include <stdio.h>
7
35
  #include <string.h>
@@ -9,7 +37,7 @@
9
37
  #include <stdlib.h>
10
38
  #include <unistd.h>
11
39
 
12
- #define ECHOMAX (255)
40
+ #define ECHOMAX (65535)
13
41
 
14
42
  int main(int argc, char *argv[])
15
43
  {
@@ -76,7 +104,7 @@
76
104
  #include <stdlib.h>
77
105
  #include <unistd.h>
78
106
 
79
- #define ECHOMAX (255)
107
+ #define ECHOMAX (65535)
80
108
 
81
109
  int main(int argc, char *argv[])
82
110
  {

1

タグの追加

2021/12/02 06:30

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
File without changes