Win7上Socket服务端通信错误退出
Win7下Socket服务端通信异常退出
socket通信时,服务端会造成程序死掉,而且是无法捕捉到的异常退出
经过数天多次测试,XP下正常,绝大部分的WIN7系统会退。
以下是写的专门用于测试该问题的小程序,一个服务端,一个客户端。
其中服务端开始后,客户端指定本机的IP地址即可,注意不要使用回环地址,测试时发现回环地址不容易退。
客户端连接200个socket,每个socket频繁收发数据,很快程序退出
开发环境:VS2010,C#,Dot Net4.0
完整程序及代码链接:http://l5.yunpan.cn/lk/QkBwwZxj6wDzT
(代码没有处理各种连接及断开的异常情况,不影响测试)
请各位帮忙看看问题所在,是不是WIN7的什么补丁要装一下?测试WIN7机装了SP1,拿360打了所有补丁,一样会退
服务端监听代码:
服务端通信核心代码:
socket通信时,服务端会造成程序死掉,而且是无法捕捉到的异常退出
经过数天多次测试,XP下正常,绝大部分的WIN7系统会退。
以下是写的专门用于测试该问题的小程序,一个服务端,一个客户端。
其中服务端开始后,客户端指定本机的IP地址即可,注意不要使用回环地址,测试时发现回环地址不容易退。
客户端连接200个socket,每个socket频繁收发数据,很快程序退出
开发环境:VS2010,C#,Dot Net4.0
完整程序及代码链接:http://l5.yunpan.cn/lk/QkBwwZxj6wDzT
(代码没有处理各种连接及断开的异常情况,不影响测试)
请各位帮忙看看问题所在,是不是WIN7的什么补丁要装一下?测试WIN7机装了SP1,拿360打了所有补丁,一样会退
服务端监听代码:
public class 监听线程
{
public static int ClientCount = 0;
private static List<服务端通信线程> list = new List<服务端通信线程>();
private static string Ip = "";
private static int Port = 0;
public static void 启动监听线程(string strIp, int port)
{
Ip = strIp;
Port = port;
var th = new Thread(Run);
th.IsBackground = true;
th.Start();
}
private static void Run()
{
var tcpListener = new TcpListener(IPAddress.Parse(Ip), Port);
tcpListener.Start();
while (true)
{
Thread.Sleep(100);
var tcpClient = tcpListener.AcceptTcpClient();
var obj = new 服务端通信线程();
obj.启动通信线程(tcpClient);
list.Add(obj);
ClientCount++;
}
}
}
服务端通信核心代码:
public class 服务端通信线程
{
private TcpClient tcpClient = null;
public void 启动通信线程(TcpClient tcpClient)
{
this.tcpClient = tcpClient;
this.tcpClient.ReceiveTimeout = 2000;
this.tcpClient.SendTimeout = 2000;
var th = new Thread(Run);
th.IsBackground = true;
th.Start();
}
private int ReadByte(byte[] buffer, int offset, int size)
{
try
{
return tcpClient.GetStream().Read(buffer, offset, size);