myTimer.Enabled = false;
//执行accept(),当挂起队列为空时将阻塞本线程,同时由于上一语句,定时器将停止,直至有连接传入
Socket acceptSock = sock.Accept();
//将accept()产生的Socket对象存入ArrayList
alSock.Add(acceptSock);
// 构造Threading.Timer对象,这将导致程序另启线程。线程将执行回调函数,该委托限制
//函数参数须为object型。Threading.Timer构造器的第二个参数即传入回调函数的参数;
//第三个参数指定延时,取0则立即启动;最后参数间隔,取0则只执行一次。
System.Threading.Timer ti = new System.Threading.Timer(new TimerCallback(ReceiveMsg), acceptSock, 0, 0);
myTimer.Enabled = true;
//设置接收数据缓冲区的大小
Byte[] recData = new Byte[300000000];
//接收数据
acceptSock.Receive(recData);//由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。(这部报错,怎么回事啊?)
if (acceptSock.Receive(recData) > 0)
{
MessageBox.Show("网页在" + DateTime.Now.ToString()
+ "接收的数据大小为:" + acceptSock.Receive(recData).ToString());
}
string strFileName = ConfigurationManager.AppSettings["Mz"];
FileStream fileStream = new FileStream(strFileName, FileMode.OpenOrCreate);
BinaryWriter writer = new BinaryWriter(fileStream);
writer.Write(recData, 0, recData.Length - 1);
//关闭写文件流
fileStream.Close();
writer.Close();
//关闭接收数据的Socket
acceptSock.Shutdown(SocketShutdown.Receive);
acceptSock.Close();
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货