お世話になります。  
TCPソケットについての質問です。  
レスポンス速度確保のため、ソケットのコネクションを常時接続にしたままで処理を行い、何らかの原因で、コネクションが切断された場合、再接続を行うようにしたいのですが、実現可能でしょうか？クライアントはWindows10
C#、サーバーは未定です。  
再接続時のサーバー再起動も避けたいです。
CC BY-SA 4.0
2018-08-09T05:15:47.613
47369
2018-08-10T08:46:45.763
2018-08-09T05:32:12.930
3060
29659
question
c# network socket
ソケットコネクション常時接続したい、切断時は再接続したい。
[TCP Keep
Alive](https://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%BC%E3%83%97%E3%82%A2%E3%83%A9%E3%82%A4%E3%83%96#TCP%E3%82%AD%E3%83%BC%E3%83%97%E3%82%A2%E3%83%A9%E3%82%A4%E3%83%96)は名前の通り接続を持続させるものとしてよく知られています。実はそれだけでなく、切断検出にも使えます。  
C#であれば[Socket.SetSocketOptionメソッド](https://msdn.microsoft.com/ja-
jp/library/e160993d\(v=vs.110\).aspx)で設定できます。

> 再接続時のサーバー再起動も避けたいです。

これはサーバーの実装次第であり、クライアントでは制御できません。

* * *

> Keep Aliveは、Linuxにも実装されていますでしょうか？

Linuxに限らずほぼ全ての通信機器で実装されています。（そうでないと応答も受け取れないためKeep
Aliveを有効にした瞬間、無応答で切断扱いされてしまいます。）
CC BY-SA 4.0
2018-08-09T05:29:49.183
47370
2018-08-10T08:46:45.763
2018-08-10T08:46:45.763
4236
4236
47369
answer