socket 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。"
anya 2009-03-23 06:29:55 客户端打开了一个页面,然后一直打开状态,监听并截屏传递给服务器端,
服务器端连接客户端,然后不间断得截屏。
但是现在这种情况我只能截屏一次,再截一次就出现上面的错误提示。
牧野说是要不停的“accept”,可是我找不出问题的所在。下面是代码,谢谢,在线等。
服务器端
#region 发送命令
public void WaitData()
{
try
{
System.Net.Sockets.Socket su = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
System.Net.IPEndPoint localEndPoint = new System.Net.IPEndPoint(System.Net.IPAddress.Parse(StrIp.Replace("'", "''").Trim()), 7878);
su.Blocking = true;
su.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 3000);//设置超时
su.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 3000);
su.Connect(localEndPoint);
su.Send(Encoding.Unicode.GetBytes("1"));
//设置接收数据缓冲区的大小
byte[] b = new byte[1024 * 4];
//如何确定该数组大小
System.IO.MemoryStream fs = new System.IO.MemoryStream();
int got = 0;
int datalength = 0;
while (true)
{
got = su.Receive(b);
fs.Write(b, 0, got);
if (got > 0)
datalength = datalength + got;
else
break;
}
Bitmap Img = new Bitmap(fs);
//保存图片必须用物理路径
string Path3 = Server.MapPath("..\\1.jpg");
Img.Save(Path3, ImageFormat.Jpeg);
//提取服务器端的图片可以用http路径
this.Image1.ImageUrl = Path3;
//关闭写文件流
fs.Close();
//关闭接收数据的Socket
su.Close();
}
catch
{
}
}
#endregion