回答編集履歴

2

コメント追記

2023/08/03 13:35

投稿

hqf00342
hqf00342

スコア282

test CHANGED
@@ -1,5 +1,5 @@
1
1
  受信部だけ少し直してテストしてみましたが私の環境では毎回受信できています(コンソールログで確認)。
2
- UdpClient各メソッドのパラメータの与え方を再度確認してみてはいかがでしょうか
2
+ UdpClient各メソッドのパラメータの与え方を再度確認してみてはいかがでしょうか
3
3
 
4
4
  ```csharp
5
5
  using System;
@@ -22,14 +22,7 @@
22
22
  void Start()
23
23
  {
24
24
  udpServer = new UdpClient(receivePort);
25
-
26
- t = new Thread(() =>
25
+ t = new Thread(udpReceive);
27
- {
28
- while (true)
29
- {
30
- this.udpReceive();
31
- }
32
- });
33
26
  t.IsBackground = true;
34
27
  t.Start();
35
28
  }
@@ -42,15 +35,19 @@
42
35
 
43
36
  private void udpReceive()
44
37
  {
38
+ while (true)
39
+ {
45
- var ep = new IPEndPoint(IPAddress.Any, 0);
40
+ var ep = new IPEndPoint(IPAddress.Any, 0);
46
- receiveddata = udpServer.Receive(ref ep);
41
+ receiveddata = udpServer.Receive(ref ep);
42
+ }
47
43
  }
48
44
 
49
45
  private void receiveData()
50
46
  {
47
+ var data= receiveddata;
51
- if (receiveddata?.Length > 0)
48
+ if (data?.Length > 0)
52
49
  {
53
- var str = Encoding.ASCII.GetString(receiveddata);
50
+ var str = Encoding.ASCII.GetString(data);
54
51
  Debug.Log("Receive Data:" + str);
55
52
  receiveddata = null;
56
53
  }
@@ -67,11 +64,14 @@
67
64
  var count = 0;
68
65
  while(true)
69
66
  {
70
- var data = Encoding.ASCII.GetBytes($"count {count}");
67
+ var str = $"count={count++}";
68
+ var bin = Encoding.UTF8.GetBytes(str);
71
- udp.Send(data, data.Length, "<IPアドレス>", 1234);
69
+ udp.Send(bin, bin.Length, "<IPアドレス>", 1234);
72
- Console.WriteLine($"{DateTime.Now} | sent {count}");
70
+ Console.WriteLine(str);
73
71
  await Task.Delay(1000);
74
- count++;
75
72
  }
76
73
  ```
77
74
 
75
+ あとこのコードでは受信データが失われるタイミングがあるので
76
+ 受信データをFIFOキューに入れたり(udpReceive()内部)、受信データ処理をUpdate()とは違うタイミングでやることも将来的には考えてもよいと思います。
77
+

1

誤字修正

2023/08/03 10:47

投稿

hqf00342
hqf00342

スコア282

test CHANGED
@@ -1,5 +1,5 @@
1
1
  受信部だけ少し直してテストしてみましたが私の環境では毎回受信できています(コンソールログで確認)。
2
- UdpClientのパラメータの与え方を再度確認してみてはいかがでしょうか
2
+ UdpClient各メソッドのパラメータの与え方を再度確認してみてはいかがでしょうか
3
3
 
4
4
  ```csharp
5
5
  using System;