110,533
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 开始对指定的端口进行监听。
/// </summary>
protected void StartListening()
{
tcp = new TcpListener(IPAddress.Parse(ConfigurationManager.AppSettings["webip"]), this._prot);
tcp.ExclusiveAddressUse = false;
tcp.Start(20);
lock (objTemp)
{
while (isrun)
{
try
{
if (tcp.Pending())
{
socket = tcp.AcceptSocket();
thread2 = new Thread(new ThreadStart(ServiceClient));
thread2.Priority = ThreadPriority.Lowest;
thread2.IsBackground = false;
thread2.Start();
}
}
catch (System.InvalidOperationException ioe)
{
string err = "\r\nTime:" + DateTime.Now.ToString() + "\r\nSource:" + ioe.Source + " \r\n Message: " + ioe.Message + " \r\n StackTrace: " + ioe.StackTrace + "\r\nStartListening InvalidOperationException\r\n";
Server.WriteToEventLog(err);//写入错误日志
}
catch (System.Net.Sockets.SocketException se)
{
string err = "\r\nTime:" + DateTime.Now.ToString() + "\r\nSource:" + se.Source + " \r\n Message: " + se.Message + " \r\n StackTrace: " + se.StackTrace + "\r\nStartListening SocketException\r\n";
Server.WriteToEventLog(err);//写入错误日志
}
catch (Exception e)
{
string err = "\r\nTime:" + DateTime.Now.ToString() + "\r\nSource:" + e.Source + " \r\n Message: " + e.Message + " \r\n StackTrace: " + e.StackTrace + "\r\nStartListening Exception\r\n";
Server.WriteToEventLog(err);//写入错误日志
}
}
}
}
/// <summary>
/// 侦听端口
/// </summary>
protected void AcceptMsg()
{
bool blistener = true;
while (blistener)
{
if (stream == null)
{
blistener = false;
continue;
}
Byte[] buffer = new Byte[40960];
try
{
int ss = stream.Read(buffer, 0, buffer.Length);
string text = SerlizerHelper.Deserialize(buffer).ToString();
buffer = null;
HandleXml xml = new HandleXml();
try
{
xml.Load(text);
}
catch
{
continue;
}
if (EventGetData != null)
EventGetData(text, xml);//获得数据后进行处理
}
catch (SocketException ex)
{
throw ex;
}
catch (Exception e)
{
throw e; }
}
}
}
发送连接请求:listener = new TcpClient();
try
{
if (!listener.Connected)
{
listener.Connect(new IPEndPoint(IPAddress.Parse(ip), prot));
}
stream = listener.GetStream();
thread1 = new Thread(new ThreadStart(AcceptMsg));
thread1.IsBackground = false;
thread1.Priority = ThreadPriority.Lowest;
thread1.Start();
return 1;
}
catch (SocketException ex)
{
throw ex;
}
catch (Exception e)
{
throw e;
}
}