111,097
社区成员




//主程序
Thread createServer = null;
ServerThread listener = null;
//启动服务端监听线程
private void button1_Click(object sender, EventArgs e)
{
createServer = new Thread(new ThreadStart(WaitForConnect));
createServer.Start();
}
private void WaitForConnect()
{
listener = new ServerThread();
listener.StartListening();
}
//强制关闭窗口时,销毁线程,清理资源
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
try
{
listener.Dispose();
createServer.Abort();
}
catch
{ }
}
//服务端监听类
class ServerThread
{
int port = 9000; //监听端口号
IPAddress localAddr = IPAddress.Parse("127.0.0.1");
TcpListener listener = null;
Socket client = null;
public void StartListening()
{
listener = new TcpListener(localAddr,port);
listener.Start();
while (true)
{
try
{
MessageBox.Show("监听开始!");
client = listener.AcceptSocket();
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
}
}
public void Dispose()
{
try
{
if (client != null)
{
client.Close();
client = null;
}
listener.Stop();
}
catch(Exception e)
{
MessageBox.Show(e.ToString());
}
}
}
if (listener.Pending())
{
MessageBox.Show("监听开始!");
client = listener.AcceptSocket();
}
else
{
MessageBox.Show("没有挂起!");
listening = false;
}