class ScreenshotsThread
{
private String IpAddress = "";
private string IPport = "";
private String tid = "";
byte[] buffer = new byte[1024];
Socket socket;
//线程启动方法
public override void run()
{
try
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(IpAddress, int.Parse(IPport));
socket.Receive(buffer);
}
catch (Exception ex)
{
throw new Exception("读取截屏据数据存在错误!");
}
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket);
}
//异步获取方法
private void ReceiveMessage(IAsyncResult ar)
{
try
{
var socket = ar.AsyncState as Socket;
var length = socket.EndReceive(ar);
byte[] reallData = new byte[length];
Array.Copy(buffer, reallData, length);
string str = System.Text.Encoding.UTF8.GetString(reallData);
//相关处理代码
Thread.Sleep(10);
}
catch (Exception ex)
{
throw new Exception("读取截屏据数据存在错误!");
}
finally
{
socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket);
}
}
}
------解决思路----------------------
服务器的代码要求是非常严苛,特别是在并发量大的情况下,象你说的服务器卡死了这样的,就是比较严重的了。
多写单元测试多做负载测试。vs下面的负载测试免费的只到250个。以上需要另外付费够买,具说价格是天文数字。而且一次最高就是一千。
类似楼主说的这个情况。我现在处理方式是直接关闭服务器端,由保护进程再另行开启。
不过至今还没遇到过这样的情况。我们的两个服务器端(一个 android手机用的一个PC软件用的)现在已经7*24完整运几了几个月。到现在还比较稳定。
------解决思路----------------------
我们反正写了个服务开机自启