关于C#Socket断开重连问题
2017-05-27 11:17
169 查看
TCP客户端可以向TcpServer发送数据包时,若网络断开,原来的连接就会失效,出现以下错误提示:
断开套接字连接后,只能通过异步方式再次重新连接,而且只能连接到不同的 EndPoint。在操作完成前,在将不会退出的线程上必须调用
BeginConnect
导致无法发送数据包,如何处理呢?主要原因还是已断开的连接无法再使用,只能重新创建,因为我们可以采用自动重新创建连接的方式来解决,如下代码所示:
private static Socket _SocketClient;
/// <summary>
/// Socket客户端自动重新创建
/// </summary>
public static Socket SocketClient {
get {
if (_SocketClient ==
null) {
_SocketClient =
new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
_SocketClient.Connect(new IPEndPoint(IPAddress.Parse("IP地址"),
_port)); //配置服务器IP与端口
return _SocketClient;
}
--断开自动重新创建连接
if (!_SocketClient.Connected) {
_SocketClient.Close();
_SocketClient=
new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
_SocketClient.Connect(new IPEndPoint(IPAddress.Parse("IP地址"),
_port)); //配置服务器IP与端口
return _SocketClient;
}
return _SocketClient;
}
}
调用时直接用 SocketClient.send()方法发送数据即可;
断开套接字连接后,只能通过异步方式再次重新连接,而且只能连接到不同的 EndPoint。在操作完成前,在将不会退出的线程上必须调用
BeginConnect
导致无法发送数据包,如何处理呢?主要原因还是已断开的连接无法再使用,只能重新创建,因为我们可以采用自动重新创建连接的方式来解决,如下代码所示:
private static Socket _SocketClient;
/// <summary>
/// Socket客户端自动重新创建
/// </summary>
public static Socket SocketClient {
get {
if (_SocketClient ==
null) {
_SocketClient =
new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
_SocketClient.Connect(new IPEndPoint(IPAddress.Parse("IP地址"),
_port)); //配置服务器IP与端口
return _SocketClient;
}
--断开自动重新创建连接
if (!_SocketClient.Connected) {
_SocketClient.Close();
_SocketClient=
new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
_SocketClient.Connect(new IPEndPoint(IPAddress.Parse("IP地址"),
_port)); //配置服务器IP与端口
return _SocketClient;
}
return _SocketClient;
}
}
调用时直接用 SocketClient.send()方法发送数据即可;
相关文章推荐
- 关于socket编程中服务器端如何检测客户端连接断开的问题
- 关于LWIP断开网线后重连问题(热插拔问题)
- 关于java Socket与C#通信编码问题小结
- Qt关于mysql数据库断开重连的问题
- C# socket连接断开问题
- 关于socket判断连接断开并重连
- 关于判断Socket断开的问题
- 关于LWIP断开网线后重连问题(热插拔问题)
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq
- 网页websocket正常和C#websocket-csharp 断开连接问题
- flex与socket通信之成功----之成功补充篇(关于C#建立FLASH服务端的安全沙箱问题)
- QTcpSocket断开后自动重连问题 auto connect after disconnected
- C#进行SOCKET开发---当连接与与服务器断开时的问题
- 关于C# socket多线程的7个问题.希望大家发表一下意见.
- 对不起,各位哥哥,我有一个问题向你们请教,请多多指教关于C#DataGrid的问题,特急!!!
- 关于dotnet的异步socket通信的问题
- 关于C# using 作为定义范围的问题
- 关于C#中使用messagebox的问题解答
- 这是我第一篇文章,想问个关于java客户/服务器Socket的问题。
- 请教:关于C#调用COM的问题