回答編集履歴
3
通信処理に補足説明
test
CHANGED
@@ -13,11 +13,12 @@
|
|
13
13
|
|
14
14
|
■ 通信処理 (BeginRead のコールバック関数内)
|
15
15
|
|
16
|
-
(5) RDP クライアントから受信
|
16
|
+
(5) RDP クライアントから受信したら RDP サーバーに送信
|
17
|
-
(6) RDP サーバーから受信
|
17
|
+
(6) RDP サーバーから受信したら RDP クライアントに送信
|
18
18
|
|
19
19
|
(5),(6) は独立して動く必要があります。
|
20
20
|
(非同期受信のメソッドを使えば自然にそうなります。送信は同期でOK)
|
21
|
+
EndRead → 受信データを送信バッファにコピー → 次の非同期受信開始(BeginRead) → 同期送信(Write)
|
21
22
|
|
22
23
|
■ 切断処理 (BeginRead のコールバック関数内)
|
23
24
|
|
@@ -25,7 +26,7 @@
|
|
25
26
|
その場合は反対側の Socket オブジェクトを Shutdown(SocketShutdown.Send) します。
|
26
27
|
Socket オブジェクトは TCPClient.Client プロパティで取り出せます。
|
27
28
|
|
28
|
-
(7) RDP クライアントからゼロバイト受信したら RDP サーバー側を Shutdown。
|
29
|
+
(7) (5) でRDP クライアントからゼロバイト受信したら RDP サーバー側を Shutdown。
|
29
|
-
(8) RDP サーバーからゼロバイト受信したら RDP クライアント側を Shutdown。
|
30
|
+
(8) (6) でRDP サーバーからゼロバイト受信したら RDP クライアント側を Shutdown。
|
30
31
|
(9) 両方でゼロバイト受信が起きたら 両方の TCPClient を閉じて終了です。
|
31
32
|
|
2
初期処理について記述
test
CHANGED
@@ -1,21 +1,25 @@
|
|
1
1
|
次のように作ってみてください。
|
2
2
|
|
3
|
-
■
|
3
|
+
■ 初期処理
|
4
4
|
|
5
|
-
(1) RDP クライアントからの接続を受け付ける
|
6
|
-
(2) RDP サーバーに接続する
|
7
|
-
(
|
5
|
+
(0) TcpListener のインスタンスを作成、開始(Start)を行い、クライアント接続待ちの非同期操作を開始(BeginAcceptTcpClient)。
|
8
|
-
(4) RDP サーバーからの非同期受信開始
|
9
6
|
|
10
|
-
■
|
7
|
+
■ 接続処理 (BeginAcceptTcpClient のコールバック関数内)
|
11
8
|
|
9
|
+
(1) RDP クライアントからの接続を受け付け (EndAcceptTcpClient) 、次のクライアント接続待ちの非同期操作を開始(BeginAcceptTcpClient)
|
10
|
+
(2) RDP サーバーに接続する (TCPClient のインスタンスを作成し、Connect)
|
11
|
+
(3) RDP クライアントからの非同期受信開始(NetworkStream.BeginRead)
|
12
|
+
(4) RDP サーバーからの非同期受信開始(NetworkStream.BeginRead)
|
13
|
+
|
14
|
+
■ 通信処理 (BeginRead のコールバック関数内)
|
15
|
+
|
12
|
-
(5) RDP クライアントから受信したら RDP サーバーに送信
|
16
|
+
(5) RDP クライアントから受信(EndRead)したら RDP サーバーに送信(NetworkStream.Write)
|
13
|
-
(6) RDP サーバーから受信したら RDP クライアントに送信
|
17
|
+
(6) RDP サーバーから受信(EndRead)したら RDP クライアントに送信(NetworkStream.Write)
|
14
18
|
|
15
19
|
(5),(6) は独立して動く必要があります。
|
16
20
|
(非同期受信のメソッドを使えば自然にそうなります。送信は同期でOK)
|
17
21
|
|
18
|
-
■ 切断処理
|
22
|
+
■ 切断処理 (BeginRead のコールバック関数内)
|
19
23
|
|
20
24
|
相手側から切断されると、受信がゼロバイトで完了します、
|
21
25
|
その場合は反対側の Socket オブジェクトを Shutdown(SocketShutdown.Send) します。
|
1
typo
test
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
■ 接続処理
|
4
4
|
|
5
5
|
(1) RDP クライアントからの接続を受け付ける
|
6
|
-
(2) RD
|
6
|
+
(2) RDP サーバーに接続する
|
7
7
|
(3) RDP クライアントからの非同期受信開始
|
8
8
|
(4) RDP サーバーからの非同期受信開始
|
9
9
|
|