首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

Socket接了一次数据后,不能再接了,咋回事?50分再次求解

2012-02-10 
Socket接了一次数据后,不能再接了,怎么回事?50分再次求解!服务端:privatevoidForm1_Load(objectsender,Eve

Socket接了一次数据后,不能再接了,怎么回事?50分再次求解!
服务端:    
private     void     Form1_Load(object     sender,     EventArgs     e)    
                              {    
                                              thread     =     new     Thread(new     ThreadStart(get));    
                                              thread.Start();    
                              }    
 
                              private     void     get()    
                              {    
                                              socket     =     new     Socket(AddressFamily.InterNetwork,     SocketType.Stream,     ProtocolType.Tcp);    
                                              IPEndPoint     ipe     =     new     IPEndPoint(IPAddress.Parse(getip()),     10);    
                                              socket.Bind(ipe);    
                                                 
                                              isStart     =     true;    
                                              byte[]     buff     =     new     byte[1024];    
                                              while     (isStart)    
                                              {    
                                                              socket.Listen(10);    
                                                              Socket     conSocket     =     socket.Accept();    


                                                              conSocket.Receive(buff);    
                                                              string     s     =     Encoding.Default.GetString(buff);    
                                                              updateui(s);             //在textbox显示    
                                                              Thread.Sleep(200);    
                                              }    
                              }    
 
客户端:    
private     void     button1_Click(object     sender,     EventArgs     e)    
                              {    
                                              socket     =     new     Socket(AddressFamily.InterNetwork,     SocketType.Stream,     ProtocolType.Tcp);    
                                              IPEndPoint     ipe=new     IPEndPoint(IPAddress.Parse( "192.168.0.3 "),10);    
                                              socket.Connect(ipe);    
                                              if     (socket.Connected)    
                                              {    
                                                              MessageBox.Show( "链接上了! ");    
                                              }    
                                              else    
                                              {    


                                                              MessageBox.Show( "没有链接! ");    
                                              }    
                              }    
 
                              private     void     button2_Click(object     sender,     EventArgs     e)    
                              {    
                                              string     s     =     this.richTextBox1.Text.Trim();    
                                              byte[]     buff     =     Encoding.Default.GetBytes(s);    
                                              socket.Send(buff);    
                              }    
 
第一次点击发送后,正常,可以显示信息,    
但第二次后就不能正常显示了,    
我在updateui那设断点,    
发现第二次点击后都不能执行到那,这是为什么啊?    
 
怎么解决啊?大侠们帮忙啊!急!    
分不够可以加!

[解决办法]
while (isStart)
{
socket.Listen(10);
Socket conSocket = socket.Accept();
conSocket.Receive(buff);
string s = Encoding.Default.GetString(buff);
updateui(s); //在textbox显示
Thread.Sleep(200);
}

我记得服务端的这块应该调整一下

socket.Listen(10);
Socket conSocket = socket.Accept();

似乎应该放到循环外边,否则第一次接受后的状态是等待连接,而不是等待接收

热点排行