我有如下代码:
private void accept2()
{
Thread.CurrentThread.IsBackground = true;
IPAddress ip2 = IPAddress.Parse("192.168.0.106");
listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
locEP = new IPEndPoint(ip2, 20100);
listener.Bind(locEP);
listener.Listen(100);
while (true)
{ Socket accept = listener.Accept();
receive1 = new Thread(new ParameterizedThreadStart(receive2));
receive1.Start(accept);
}
}
private void receive2(object obj)
{
Thread.CurrentThread.IsBackground = true;
Socket socket = (Socket)obj;
byte[] buffer = new byte[40960];
int res = socket.Receive(buffer);
string jishou = Encoding.UTF8.GetString(buffer, 0, res);
IPEndPoint remoEP = (IPEndPoint)socket.RemoteEndPoint;
string[] ServerInfo = jishou.Split(',');
}
在Form Load事件中,我用以下代码打开这个套接字:
accept = new Thread(new ThreadStart(accept2));
accept.Start();
现在我要在该窗体消失的时候把它关闭了,然后再下一个窗体中如果要用到该套接字时候再重新打开.如果在这里不关闭,在下一个窗口中使用的时候会提示"一个套接字只能使用一次",所以我要把它们关闭,请问要怎么弄啊?
private void accept2()
{
Thread.CurrentThread.IsBackground = true;
IPAddress ip2 = IPAddress.Parse("192.168.0.106");
listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
locEP = new IPEndPoint(ip2, 20100);
listener.Bind(locEP);
listener.Listen(100);
while (true)
{ Socket accept = listener.Accept();
receive1 = new Thread(new ParameterizedThreadStart(receive2));
receive1.Start(accept);
}
}
private void receive2(object obj)
{
Thread.CurrentThread.IsBackground = true;
Socket socket = (Socket)obj;
byte[] buffer = new byte[40960];
int res = socket.Receive(buffer);
string jishou = Encoding.UTF8.GetString(buffer, 0, res);
IPEndPoint remoEP = (IPEndPoint)socket.RemoteEndPoint;
string[] ServerInfo = jishou.Split(',');
}
在Form Load事件中,我用以下代码打开这个套接字:
accept = new Thread(new ThreadStart(accept2));
accept.Start();
现在我要在该窗体消失的时候把它关闭了,然后再下一个窗体中如果要用到该套接字时候再重新打开.如果在这里不关闭,在下一个窗口中使用的时候会提示"一个套接字只能使用一次",所以我要把它们关闭,请问要怎么弄啊?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货