質問編集履歴

2

質問の説明文を追加

2021/12/02 06:31

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,11 +1,67 @@
1
1
  以下のサンプルプログラムを改良して各自の環境で1つのUDPデータグラムで送受信可能なUDPペイロードのサイズが何バイトであるか求める課題があるのですがどのようにすればいいでしょうか。
2
2
 
3
+
4
+
3
- 環境はLinuxのターミナル
5
+ 追記:肝心なことを書いていませんした
6
+
7
+ すみません。
8
+
9
+ EchoStringLenに着目していたのですが具体的にどのようなことをすればUDPペイロードのサイズを計れるかが調べはしたのですがどうしても分かりませんでした。
10
+
11
+
12
+
13
+ 1人の回答者様の回答を参考に
14
+
15
+ UDPEchoClient.cを変えてみました。
16
+
17
+ ありがとうございました。
4
18
 
5
19
 
6
20
 
7
21
  ```c
8
22
 
23
+ //UDPEchoClientを改造
24
+
25
+ //...
26
+
27
+ memset(&servAddr, 0, sizeof(servAddr));
28
+
29
+ servAddr.sin_family = AF_INET;
30
+
31
+ servAddr.sin_addr.s_addr = inet_addr(servIP);
32
+
33
+ servAddr.sin_port = htons(servPort);
34
+
35
+ //ここから
36
+
37
+ for(echoStringLen = 1; echoStringLen < 65536; echoStringLen++){
38
+
39
+ sendMsgLen = sendto(sock, echoString, echoStringLen, 0, (struct sockaddr*)&servAddr, sizeof(servAddr));
40
+
41
+ if(sendMsgLen == -1){
42
+
43
+ printf("%d\n",echoStringLen);
44
+
45
+ break;
46
+
47
+ }
48
+
49
+ }
50
+
51
+ //ここまで
52
+
53
+ //...
54
+
55
+ ```
56
+
57
+ 実行してみたところ4399という数字がクライアント側に表示されましたが、大きな間違いはないでしょうか。
58
+
59
+ 以下サンプルプログラム
60
+
61
+
62
+
63
+ ```c
64
+
9
65
  //UDPEchoServer.c
10
66
 
11
67
  #include <stdio.h>
@@ -20,7 +76,7 @@
20
76
 
21
77
 
22
78
 
23
- #define ECHOMAX (255)
79
+ #define ECHOMAX (65535)
24
80
 
25
81
 
26
82
 
@@ -154,7 +210,7 @@
154
210
 
155
211
 
156
212
 
157
- #define ECHOMAX (255)
213
+ #define ECHOMAX (65535)
158
214
 
159
215
 
160
216
 

1

タグの追加

2021/12/02 06:30

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
File without changes