質問編集履歴

1

追記

2016/07/08 02:12

投稿

ryo_se
ryo_se

スコア68

test CHANGED
File without changes
test CHANGED
@@ -50,7 +50,85 @@
50
50
 
51
51
 
52
52
 
53
+ ※追記
53
54
 
55
+ とりあえずご指定のように接続チェックの前に0バイトのSend呼び出しを行ってみましたが、
56
+
57
+ クライアント側の電源を落とした後でもConnectedでfalse判定がされません。
58
+
59
+ ブロック状態で止まっている様子はないのですが・・。
60
+
61
+
62
+
63
+ ```ここに言語を入力
64
+
65
+ rivate void ThreadMethod(object state)
66
+
67
+ {
68
+
69
+ // クライアントのソケット
70
+
71
+ System.Net.Sockets.Socket ClientSocket = (System.Net.Sockets.Socket)state;
72
+
73
+ int
74
+
75
+ try
76
+
77
+ {
78
+
79
+ while (Form1.SLTAlive)
80
+
81
+ {
82
+
83
+ Thread.Sleep(1);
84
+
85
+
86
+
87
+ byte[] tmp = new byte[1];
88
+
89
+ ClientSocket.Blocking = false;
90
+
91
+ ClientSocket.Send(tmp, 0, 0);
92
+
93
+ ClientSocket.Blocking = true;
94
+
95
+ Console.WriteLine(cnt);
96
+
97
+ //ソケットが接続断またはnullになっていた場合、スレッドを終了させる
98
+
99
+ if (ClientSocket.Connected == false || ClientSocket == null)
100
+
101
+ {
102
+
103
+ //クライアントと切断されました
104
+
105
+
106
+
107
+ ClientSocket.Shutdown(SocketShutdown.Both);
108
+
109
+ ClientSocket.Close();
110
+
111
+ ClientSocket = null;
112
+
113
+ break;
114
+
115
+ }
116
+
117
+
118
+
119
+
120
+
121
+ //略
122
+
123
+
124
+
125
+ }
126
+
127
+ }
128
+
129
+ }
130
+
131
+ ```
54
132
 
55
133
 
56
134