質問編集履歴

14

プログラムの変更

2018/10/24 09:53

投稿

kkaaaiiii
kkaaaiiii

スコア15

test CHANGED
File without changes
test CHANGED
@@ -194,14 +194,14 @@
194
194
 
195
195
  Debug.LogFormat("{0}, {1}", result[0], result[1]);
196
196
 
197
+        //訂正箇所(追加)
198
+
199
+        Vector3 pos = player.transform.position;
200
+
201
+    player.transform.position = new Vector3((float)result[0], pos.y, (float)result[1]);
202
+
197
203
  }
198
204
 
199
- //訂正箇所(追加)
200
-
201
-      Vector3 pos = player.transform.position;
202
-
203
- player.transform.position = new Vector3((float)result[0], pos.y, (float)result[1]);
204
-
205
205
  }
206
206
 
207
207
 

13

感謝

2018/10/24 09:53

投稿

kkaaaiiii
kkaaaiiii

スコア15

test CHANGED
File without changes
test CHANGED
@@ -276,4 +276,8 @@
276
276
 
277
277
  オブジェクトの位置が変わったので通信には成功しました。
278
278
 
279
- しかし依然としてdarknetのほうのアプリケーションは起動しないままです。
279
+ ~~しかし依然としてdarknetのほうのアプリケーションは起動しないままです。~~
280
+
281
+
282
+
283
+ 自己解決しました。ありがとうございました。

12

追記

2018/10/24 09:48

投稿

kkaaaiiii
kkaaaiiii

スコア15

test CHANGED
File without changes
test CHANGED
@@ -200,7 +200,7 @@
200
200
 
201
201
       Vector3 pos = player.transform.position;
202
202
 
203
- player.transform.position = new Vector3((float)result[0], (float)result[1], pos.z);
203
+ player.transform.position = new Vector3((float)result[0], pos.y, (float)result[1]);
204
204
 
205
205
  }
206
206
 

11

プログラムの変更

2018/10/24 09:17

投稿

kkaaaiiii
kkaaaiiii

スコア15

test CHANGED
File without changes
test CHANGED
@@ -196,7 +196,7 @@
196
196
 
197
197
  }
198
198
 
199
- //訂正箇所
199
+ //訂正箇所(追加)
200
200
 
201
201
       Vector3 pos = player.transform.position;
202
202
 
@@ -238,7 +238,7 @@
238
238
 
239
239
  result[i] = BitConverter.ToDouble(data, i * DOUBLE_LENGTH);
240
240
 
241
- //訂正箇所
241
+ //訂正箇所(消去)
242
242
 
243
243
  //Vector3 pos = player.transform.position;
244
244
 
@@ -268,16 +268,12 @@
268
268
 
269
269
  cuda v9.1
270
270
 
271
- ###
271
+
272
-
273
- 現状の解決方法と共に他の方法で実現したいこと(cからc#にデータを送ること)ができるのならそれも合わせて教えていただけると嬉しいです。
274
-
275
- よろしくお願いします。
276
272
 
277
273
  ###追記
278
274
 
279
275
  t_obaraさんとedo_m18さんがご指摘してくださったところを訂正したところ
280
276
 
281
- オブジェクトの位置が変わったので通信に成功しました。
277
+ オブジェクトの位置が変わったので通信に成功しました。
282
278
 
283
279
  しかし依然としてdarknetのほうのアプリケーションは起動しないままです。

10

追記

2018/10/24 09:13

投稿

kkaaaiiii
kkaaaiiii

スコア15

test CHANGED
File without changes
test CHANGED
@@ -6,258 +6,258 @@
6
6
 
7
7
  [この質問](https://teratail.com/questions/86780)を参考にさせてもらいました。
8
8
 
9
+
10
+
9
11
  ### 発生している問題・エラーメッセージ
10
12
 
13
+ エラーは特に出ていませんがちゃんと動いてくれません。
14
+
15
+ ~~そもそも通信がうまくいってない気がします~~ うまくいきました。
16
+
17
+ コマンドプロンプトでdarknetを実行しても
18
+
19
+
20
+
21
+ (以上省略)
22
+
23
+ 99 conv 128 1 x 1 / 1 52 x 52 x 384 -> 52 x 52 x 128 0.266 BF
24
+
25
+ 100 conv 256 3 x 3 / 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
26
+
27
+ 101 conv 128 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
28
+
29
+ 102 conv 256 3 x 3 / 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
30
+
31
+ 103 conv 128 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
32
+
33
+ 104 conv 256 3 x 3 / 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
34
+
35
+ 105 conv 255 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 255 0.353 BF
36
+
37
+ 106 yolo
38
+
39
+ Total BFLOPS 65.864
40
+
41
+ Loading weights from yolov3.weights...
42
+
43
+ seen 64
44
+
45
+ Done!
46
+
47
+ Webcam index: 0
48
+
49
+ Video stream: 640 x 480 ←
50
+
51
+
52
+
53
+ 矢印のところで止まってしまいます。新たに実装した関数をコメントアウトすると正常に動きます。
54
+
55
+
56
+
57
+
58
+
59
+ ### 該当のソースコード
60
+
61
+
62
+
63
+ ```c
64
+
65
+ //送信
66
+
67
+ // darknet/src/image.cに以下の関数を追加
68
+
69
+
70
+
71
+ char addr[16] = "127.0.0.1";
72
+
73
+ int port = 20001;
74
+
75
+ #define INTERVAL_TIME 1
76
+
77
+
78
+
79
+ void get_point(double u, double v, char* address, int port) {
80
+
81
+ double data[] = {u,v};
82
+
83
+ WSADATA dat;
84
+
85
+ WSAStartup(MAKEWORD(2, 0), &dat);
86
+
87
+ int udp = socket(AF_INET, SOCK_DGRAM, 0);
88
+
89
+ struct sockaddr_in addr;
90
+
91
+
92
+
93
+ memset(&addr, 0, sizeof(addr));
94
+
95
+ addr.sin_family = AF_INET;
96
+
97
+ addr.sin_port = htons(port);
98
+
99
+
100
+
101
+ inet_pton(AF_INET, address, &addr.sin_addr.S_un.S_addr);
102
+
103
+
104
+
105
+ while (1)
106
+
107
+ {
108
+
109
+ sendto(udp, (char*)data, sizeof data, 0, (struct sockaddr *)&addr, sizeof(addr));
110
+
111
+ Sleep(INTERVAL_TIME);
112
+
113
+ }
114
+
115
+
116
+
117
+ closesocket(udp);
118
+
119
+
120
+
121
+ WSACleanup();
122
+
123
+ }
124
+
11
125
  ```
12
126
 
13
- エラーは特に出ていませんがちゃんと動いてくれません。
14
-
15
- そもそも通信がうまくいってない気がします。
16
-
17
- コマンドプロンプトでdarknetを実行しても
18
-
19
-
20
-
21
- (以上省略)
22
-
23
- 99 conv 128 1 x 1 / 1 52 x 52 x 384 -> 52 x 52 x 128 0.266 BF
24
-
25
- 100 conv 256 3 x 3 / 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
26
-
27
- 101 conv 128 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
28
-
29
- 102 conv 256 3 x 3 / 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
30
-
31
- 103 conv 128 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
32
-
33
- 104 conv 256 3 x 3 / 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
34
-
35
- 105 conv 255 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 255 0.353 BF
36
-
37
- 106 yolo
38
-
39
- Total BFLOPS 65.864
40
-
41
- Loading weights from yolov3.weights...
42
-
43
- seen 64
44
-
45
- Done!
46
-
47
- Webcam index: 0
48
-
49
- Video stream: 640 x 480 ←
50
-
51
-
52
-
53
- 矢印のところで止まってしまいます。新たに実装した関数をコメントアウトすると正常に動きます。
127
+
128
+
129
+
130
+
131
+ ```c#
132
+
133
+ //受信
134
+
135
+ //unityのスクリプト
136
+
137
+ using System.Collections;
138
+
139
+ using System.Collections.Generic;
140
+
141
+ using UnityEngine;
142
+
143
+ using System;
144
+
145
+ using System.Net.Sockets;
146
+
147
+ using System.Threading;
148
+
149
+ using System.Net;
150
+
151
+
152
+
153
+ public class PointReceive : MonoBehaviour
154
+
155
+ {
156
+
157
+ public GameObject player;
158
+
159
+ private const int DATA_LENGTH = 2;
160
+
161
+ private const int DOUBLE_LENGTH = 8;
162
+
163
+ private UdpClient udp;
164
+
165
+ private Thread thread;
166
+
167
+ private byte[] data;
168
+
169
+ private double[] result = new double[DATA_LENGTH];
170
+
171
+
172
+
173
+ void Start()
174
+
175
+ {
176
+
177
+ udp = new UdpClient(20001);
178
+
179
+ thread = new Thread(new ThreadStart(threadWork));
180
+
181
+ thread.Start();
182
+
183
+ }
184
+
185
+
186
+
187
+ void Update()
188
+
189
+ {
190
+
191
+ if (data != null)
192
+
193
+ {
194
+
195
+ Debug.LogFormat("{0}, {1}", result[0], result[1]);
196
+
197
+ }
198
+
199
+ //訂正箇所
200
+
201
+      Vector3 pos = player.transform.position;
202
+
203
+ player.transform.position = new Vector3((float)result[0], (float)result[1], pos.z);
204
+
205
+ }
206
+
207
+
208
+
209
+ void OnApplicationQuit()
210
+
211
+ {
212
+
213
+ udp.Close();
214
+
215
+ thread.Abort();
216
+
217
+ }
218
+
219
+
220
+
221
+ void threadWork()
222
+
223
+ {
224
+
225
+ while (true)
226
+
227
+ {
228
+
229
+ IPEndPoint remoteEP = null;
230
+
231
+ data = udp.Receive(ref remoteEP);
232
+
233
+
234
+
235
+ for (int i = 0; i < DATA_LENGTH; i++)
236
+
237
+ {
238
+
239
+ result[i] = BitConverter.ToDouble(data, i * DOUBLE_LENGTH);
240
+
241
+ //訂正箇所
242
+
243
+ //Vector3 pos = player.transform.position;
244
+
245
+ //player.transform.position = new Vector3((float)result[0], (float)result[1], pos.z);
246
+
247
+ }
248
+
249
+ }
250
+
251
+ }
252
+
253
+ }
254
+
255
+
54
256
 
55
257
  ```
56
258
 
57
259
 
58
260
 
59
- ### 該当のソースコード
60
-
61
-
62
-
63
- ```c
64
-
65
- //送信
66
-
67
- // darknet/src/image.cに以下の関数を追加
68
-
69
-
70
-
71
- char addr[16] = "127.0.0.1";
72
-
73
- int port = 20001;
74
-
75
- #define INTERVAL_TIME 1
76
-
77
-
78
-
79
- void get_point(double u, double v, char* address, int port) {
80
-
81
- double data[] = {u,v};
82
-
83
- WSADATA dat;
84
-
85
- WSAStartup(MAKEWORD(2, 0), &dat);
86
-
87
- int udp = socket(AF_INET, SOCK_DGRAM, 0);
88
-
89
- struct sockaddr_in addr;
90
-
91
-
92
-
93
- memset(&addr, 0, sizeof(addr));
94
-
95
- addr.sin_family = AF_INET;
96
-
97
- addr.sin_port = htons(port);
98
-
99
-
100
-
101
- inet_pton(AF_INET, address, &addr.sin_addr.S_un.S_addr);
102
-
103
-
104
-
105
- while (1)
106
-
107
- {
108
-
109
- sendto(udp, (char*)data, sizeof data, 0, (struct sockaddr *)&addr, sizeof(addr));
110
-
111
- Sleep(INTERVAL_TIME);
112
-
113
- }
114
-
115
-
116
-
117
- closesocket(udp);
118
-
119
-
120
-
121
- WSACleanup();
122
-
123
- }
124
-
125
- ```
126
-
127
-
128
-
129
-
130
-
131
- ```c#
132
-
133
- //受信
134
-
135
- //unityのスクリプト
136
-
137
- using System.Collections;
138
-
139
- using System.Collections.Generic;
140
-
141
- using UnityEngine;
142
-
143
- using System;
144
-
145
- using System.Net.Sockets;
146
-
147
- using System.Threading;
148
-
149
- using System.Net;
150
-
151
-
152
-
153
- public class PointReceive : MonoBehaviour
154
-
155
- {
156
-
157
- public GameObject player;
158
-
159
- private const int DATA_LENGTH = 2;
160
-
161
- private const int DOUBLE_LENGTH = 8;
162
-
163
- private UdpClient udp;
164
-
165
- private Thread thread;
166
-
167
- private byte[] data;
168
-
169
- private double[] result = new double[DATA_LENGTH];
170
-
171
-
172
-
173
- void Start()
174
-
175
- {
176
-
177
- udp = new UdpClient(20001);
178
-
179
- thread = new Thread(new ThreadStart(threadWork));
180
-
181
- thread.Start();
182
-
183
- }
184
-
185
-
186
-
187
- void Update()
188
-
189
- {
190
-
191
- if (data != null)
192
-
193
- {
194
-
195
- Debug.LogFormat("{0}, {1}", result[0], result[1]);
196
-
197
- }
198
-
199
- //訂正箇所
200
-
201
-      Vector3 pos = player.transform.position;
202
-
203
- player.transform.position = new Vector3((float)result[0], (float)result[1], pos.z);
204
-
205
- }
206
-
207
-
208
-
209
- void OnApplicationQuit()
210
-
211
- {
212
-
213
- udp.Close();
214
-
215
- thread.Abort();
216
-
217
- }
218
-
219
-
220
-
221
- void threadWork()
222
-
223
- {
224
-
225
- while (true)
226
-
227
- {
228
-
229
- IPEndPoint remoteEP = null;
230
-
231
- data = udp.Receive(ref remoteEP);
232
-
233
-
234
-
235
- for (int i = 0; i < DATA_LENGTH; i++)
236
-
237
- {
238
-
239
- result[i] = BitConverter.ToDouble(data, i * DOUBLE_LENGTH);
240
-
241
- //訂正箇所
242
-
243
- //Vector3 pos = player.transform.position;
244
-
245
- //player.transform.position = new Vector3((float)result[0], (float)result[1], pos.z);
246
-
247
- }
248
-
249
- }
250
-
251
- }
252
-
253
- }
254
-
255
-
256
-
257
- ```
258
-
259
-
260
-
261
261
  ### 補足情報(FW/ツールのバージョンなど)
262
262
 
263
263
  visual studio 2017
@@ -275,3 +275,9 @@
275
275
  よろしくお願いします。
276
276
 
277
277
  ###追記
278
+
279
+ t_obaraさんとedo_m18さんがご指摘してくださったところを訂正したところ
280
+
281
+ オブジェクトの位置が変わったので通信に成功しました。
282
+
283
+ しかし依然としてdarknetのほうのアプリケーションは起動しないままです。

9

追記

2018/10/24 09:10

投稿

kkaaaiiii
kkaaaiiii

スコア15

test CHANGED
File without changes
test CHANGED
@@ -196,6 +196,12 @@
196
196
 
197
197
  }
198
198
 
199
+ //訂正箇所
200
+
201
+      Vector3 pos = player.transform.position;
202
+
203
+ player.transform.position = new Vector3((float)result[0], (float)result[1], pos.z);
204
+
199
205
  }
200
206
 
201
207
 
@@ -232,9 +238,11 @@
232
238
 
233
239
  result[i] = BitConverter.ToDouble(data, i * DOUBLE_LENGTH);
234
240
 
241
+ //訂正箇所
242
+
235
- Vector3 pos = player.transform.position;
243
+ //Vector3 pos = player.transform.position;
236
-
244
+
237
- player.transform.position = new Vector3((float)result[0], (float)result[1], pos.z);
245
+ //player.transform.position = new Vector3((float)result[0], (float)result[1], pos.z);
238
246
 
239
247
  }
240
248
 
@@ -265,3 +273,5 @@
265
273
  現状の解決方法と共に他の方法で実現したいこと(cからc#にデータを送ること)ができるのならそれも合わせて教えていただけると嬉しいです。
266
274
 
267
275
  よろしくお願いします。
276
+
277
+ ###追記

8

初心者アイコン

2018/10/24 09:01

投稿

kkaaaiiii
kkaaaiiii

スコア15

test CHANGED
File without changes
test CHANGED
File without changes

7

最後の変更

2018/10/24 03:09

投稿

kkaaaiiii
kkaaaiiii

スコア15

test CHANGED
File without changes
test CHANGED
@@ -262,8 +262,6 @@
262
262
 
263
263
  ###
264
264
 
265
- 他の方法で実現したいこと(cからc#にデータを送ること)ができるのなら
265
+ 現状の解決方法と共に他の方法で実現したいこと(cからc#にデータを送ること)ができるのならそれも合わせて教えていただけると嬉しいです。
266
-
267
- それも合わせて教えていただけると嬉しいです。
268
266
 
269
267
  よろしくお願いします。

6

プログラムの変更

2018/10/23 11:01

投稿

kkaaaiiii
kkaaaiiii

スコア15

test CHANGED
File without changes
test CHANGED
@@ -68,9 +68,9 @@
68
68
 
69
69
 
70
70
 
71
- char addr[16] = "127.0.0.1";//配列を用意
71
+ char addr[16] = "127.0.0.1";
72
-
72
+
73
- int port = 20001;//ポート番号
73
+ int port = 20001;
74
74
 
75
75
  #define INTERVAL_TIME 1
76
76
 
@@ -256,6 +256,10 @@
256
256
 
257
257
  unity5.6.6
258
258
 
259
+ OpenCV3.4.0
260
+
261
+ cuda v9.1
262
+
259
263
  ###
260
264
 
261
265
  他の方法で実現したいこと(cからc#にデータを送ること)ができるのなら

5

「発生している問題」を修正しました

2018/10/23 10:47

投稿

kkaaaiiii
kkaaaiiii

スコア15

test CHANGED
File without changes
test CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
 
52
52
 
53
- で止まってしまいます。新たに実装した関数をコメントアウトすると正常に動きます。
53
+ 矢印のとで止まってしまいます。新たに実装した関数をコメントアウトすると正常に動きます。
54
54
 
55
55
  ```
56
56
 

4

参考にした質問の追加

2018/10/23 10:45

投稿

kkaaaiiii
kkaaaiiii

スコア15

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  unityで扱えるようにしたいです。できるだけリアルタイムでの処理で実現させたいです。
6
6
 
7
- https://teratail.com/questions/86780を参考にさせてもらいました。
7
+ [この質問](https://teratail.com/questions/86780)を参考にさせてもらいました。
8
8
 
9
9
  ### 発生している問題・エラーメッセージ
10
10
 

3

参考にした質問の追加

2018/10/23 10:42

投稿

kkaaaiiii
kkaaaiiii

スコア15

test CHANGED
File without changes
test CHANGED
@@ -4,6 +4,8 @@
4
4
 
5
5
  unityで扱えるようにしたいです。できるだけリアルタイムでの処理で実現させたいです。
6
6
 
7
+ https://teratail.com/questions/86780を参考にさせてもらいました。
8
+
7
9
  ### 発生している問題・エラーメッセージ
8
10
 
9
11
  ```

2

「発生している問題」を修正しました

2018/10/23 10:40

投稿

kkaaaiiii
kkaaaiiii

スコア15

test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,43 @@
12
12
 
13
13
  そもそも通信がうまくいってない気がします。
14
14
 
15
+ コマンドプロンプトでdarknetを実行しても
16
+
17
+
18
+
19
+ (以上省略)
20
+
21
+ 99 conv 128 1 x 1 / 1 52 x 52 x 384 -> 52 x 52 x 128 0.266 BF
22
+
23
+ 100 conv 256 3 x 3 / 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
24
+
25
+ 101 conv 128 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
26
+
27
+ 102 conv 256 3 x 3 / 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
28
+
29
+ 103 conv 128 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 128 0.177 BF
30
+
31
+ 104 conv 256 3 x 3 / 1 52 x 52 x 128 -> 52 x 52 x 256 1.595 BF
32
+
33
+ 105 conv 255 1 x 1 / 1 52 x 52 x 256 -> 52 x 52 x 255 0.353 BF
34
+
35
+ 106 yolo
36
+
15
- 特に受信のところが理解できていません。
37
+ Total BFLOPS 65.864
38
+
39
+ Loading weights from yolov3.weights...
40
+
41
+ seen 64
42
+
43
+ Done!
44
+
45
+ Webcam index: 0
46
+
47
+ Video stream: 640 x 480 ←
48
+
49
+
50
+
51
+ ここで止まってしまいます。新たに実装した関数をコメントアウトすると正常に動きます。
16
52
 
17
53
  ```
18
54
 

1

https://teratail.com/questions/86780を参考にプログラムの大幅な修正をしました。

2018/10/23 10:37

投稿

kkaaaiiii
kkaaaiiii

スコア15

test CHANGED
File without changes
test CHANGED
@@ -28,55 +28,55 @@
28
28
 
29
29
  // darknet/src/image.cに以下の関数を追加
30
30
 
31
+
32
+
33
+ char addr[16] = "127.0.0.1";//配列を用意
34
+
31
- #include <winsock2.h>
35
+ int port = 20001;//ポート番号
36
+
32
-
37
+ #define INTERVAL_TIME 1
38
+
39
+
40
+
33
- void get_point(double u, double v) {
41
+ void get_point(double u, double v, char* address, int port) {
42
+
43
+ double data[] = {u,v};
44
+
45
+ WSADATA dat;
46
+
47
+ WSAStartup(MAKEWORD(2, 0), &dat);
48
+
49
+ int udp = socket(AF_INET, SOCK_DGRAM, 0);
50
+
51
+ struct sockaddr_in addr;
52
+
53
+
54
+
55
+ memset(&addr, 0, sizeof(addr));
56
+
57
+ addr.sin_family = AF_INET;
58
+
59
+ addr.sin_port = htons(port);
34
60
 
35
61
 
36
62
 
37
- WSADATA wsaData;
38
-
39
- int len;
40
-
41
- SOCKET sock;
42
-
43
- SOCKET sock0;
44
-
45
- struct sockaddr_in addr;
46
-
47
- struct sockaddr_in client;
48
-
49
-
50
-
51
- WSAStartup(MAKEWORD(2, 0), &wsaData);
52
-
53
- sock0 = socket(AF_INET, SOCK_DGRAM, 0);
54
-
55
- addr.sin_family = AF_INET;
56
-
57
- addr.sin_port = htons(5555);
58
-
59
- addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
63
+ inet_pton(AF_INET, address, &addr.sin_addr.S_un.S_addr);
64
+
65
+
66
+
60
-
67
+ while (1)
68
+
69
+ {
70
+
61
- bind(sock0, (struct sockaddr *)&addr, sizeof(addr));
71
+ sendto(udp, (char*)data, sizeof data, 0, (struct sockaddr *)&addr, sizeof(addr));
62
-
63
- listen(sock0, 5);
72
+
64
-
65
- len = sizeof(client);
66
-
67
- sock = accept(sock0, (struct sockaddr *)&client, &len);
68
-
69
-
70
-
71
- char s[100];
72
-
73
- sprintf(s, "%f,%f", u,v);
74
-
75
- send(sock,s,len,0);
73
+ Sleep(INTERVAL_TIME);
74
+
76
-
75
+ }
77
-
78
-
76
+
77
+
78
+
79
- closesocket(sock);
79
+ closesocket(udp);
80
80
 
81
81
 
82
82
 
@@ -106,68 +106,102 @@
106
106
 
107
107
  using System.Net.Sockets;
108
108
 
109
-
109
+ using System.Threading;
110
+
110
-
111
+ using System.Net;
112
+
113
+
114
+
111
- public class PointReceve : MonoBehaviour {
115
+ public class PointReceive : MonoBehaviour
116
+
112
-
117
+ {
113
-
114
118
 
115
119
  public GameObject player;
116
120
 
121
+ private const int DATA_LENGTH = 2;
122
+
123
+ private const int DOUBLE_LENGTH = 8;
124
+
125
+ private UdpClient udp;
126
+
127
+ private Thread thread;
128
+
117
- float[] p=new float[2];
129
+ private byte[] data;
130
+
118
-
131
+ private double[] result = new double[DATA_LENGTH];
132
+
133
+
134
+
119
- void Start () {
135
+ void Start()
136
+
120
-
137
+ {
138
+
121
-
139
+ udp = new UdpClient(20001);
140
+
122
-
141
+ thread = new Thread(new ThreadStart(threadWork));
142
+
143
+ thread.Start();
144
+
123
- }
145
+ }
124
-
146
+
147
+
148
+
125
- void Update () {
149
+ void Update()
126
-
150
+
127
- try
151
+ {
152
+
153
+ if (data != null)
128
154
 
129
155
  {
130
156
 
131
- Int32 port = 12345;
132
-
133
- TcpClient client = new TcpClient("127.0.0.1", port);
157
+ Debug.LogFormat("{0}, {1}", result[0], result[1]);
158
+
134
-
159
+ }
160
+
135
-
161
+ }
136
-
162
+
163
+
164
+
137
- NetworkStream stream = client.GetStream();
165
+ void OnApplicationQuit()
166
+
138
-
167
+ {
168
+
139
- int i = 0;
169
+ udp.Close();
170
+
140
-
171
+ thread.Abort();
172
+
173
+ }
174
+
175
+
176
+
177
+ void threadWork()
178
+
179
+ {
180
+
141
- while (true)
181
+ while (true)
182
+
183
+ {
184
+
185
+ IPEndPoint remoteEP = null;
186
+
187
+ data = udp.Receive(ref remoteEP);
188
+
189
+
190
+
191
+ for (int i = 0; i < DATA_LENGTH; i++)
142
192
 
143
193
  {
144
194
 
195
+ result[i] = BitConverter.ToDouble(data, i * DOUBLE_LENGTH);
196
+
145
- double value = stream.ReadByte();
197
+ Vector3 pos = player.transform.position;
146
-
198
+
147
- Console.WriteLine(value);
199
+ player.transform.position = new Vector3((float)result[0], (float)result[1], pos.z);
148
-
149
- p[i] = (float)value;
150
-
151
- i++;
152
200
 
153
201
  }
154
202
 
155
- Vector3 pos = player.transform.position;
156
-
157
- player.transform.position = new Vector3(p[0], p[1], pos.z);
158
-
159
- client.Close();
160
-
161
203
  }
162
204
 
163
- catch (Exception e)
164
-
165
- {
166
-
167
- Console.WriteLine(e.Message);
168
-
169
- }
170
-
171
205
  }
172
206
 
173
207
  }