分为服务器端和客户端2部分
现在的问题是:第一次开启服务器和客户端运行正常,重新启动客户端,不关掉服务器,再连接服务器端就无法收到客户端的发送的消息。
下面是关键部分代码:
点击此BUTTON,开始侦听:
private void button1_Click(object sender, System.EventArgs e)
{
thThreadRead = new Thread ( new ThreadStart( Listen ) ) ;
//以Listen过程来初始化Thread实例
thThreadRead.Start (   ) ;
//启动线程
button1.Enabled = false  ; }
下面是具体处理部分:
private void Listen()
{
try
{
IPAddress localAddr = IPAddress.Parse(textBox1.Text.Trim());
tlTcpListen = new TcpListener( localAddr, port )  ;
//以8000端口号来初始化TcpListener实例
tlTcpListen.Start ( )  ;
//开始监听网络的连接请求
statusBar1.Text = "正在监听..."  ;
stRead =  tlTcpListen.AcceptSocket ( ) ;
//通过连接请求,并获得接收数据时使用的Socket实例
EndPoint tempRemoteEP =  stRead.RemoteEndPoint  ;
IPEndPoint tempRemoteIP =  ( IPEndPoint ) tempRemoteEP ;
//获取请求的远程计算机名称
IPHostEntry host = Dns.GetHostByAddress
( tempRemoteIP.Address ) ;
string sHostName = host.HostName ;
statusBar1.Text = "已经连接!" ;
//循环侦听
while (   blistener  )
{
string sTime = DateTime.Now.ToShortTimeString  ( )   ;
//获取接收数据时的时间
Byte [ ] byRead =new Byte [ 80 ] ;
int iRead =  stRead.ReceiveFrom 
( byRead , ref tempRemoteEP ) ;
//获得接收的字节数目
Byte [ ] byText = new Byte [ iRead ] ;
//并根据接收到的字节数目来定义字节数组
Array.Copy  ( byRead , 0 , byText , 0 , iRead ) ;
//获得的IP地址
string sTemp = System.Text.Encoding.Default.GetString ( byText ) ;
//判断是否为断开连接控制码
if  (  sTemp.Trim ( )  == "STOP"  )
{
// stRead.Close ( ) ;
// tlTcpListen.Stop  (  )  ;
//关闭侦听
statusBar1.Text = "连接已经关闭!"  ;
thThreadRead.Abort  (   )  ;
//中止线程
// return ;
}
  

}
请热心的朋友帮忙看看,谢谢