我用socket类编的服务器端的循环监听程序,但是每次接受一次数据后,服务端窗体就会死机状态,如果把这个函数放到按钮单击事件中,并把while去掉!接受一次数据,单击一次按钮就没有这个现象,请问为什么用while循环监听就出现窗体没有响应,一动就一片空白了。
private void beginLisen()
{
bool done=true; IPAddress ip = IPAddress.Parse("127.0.0.1");
IPEndPoint ipe = new IPEndPoint(ip, 11000);
while (done)
{
Socket s2 = new Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp);
s2.Bind(ipe);
s2.Listen(10);
Socket s1 = s2.Accept();
byte[] be = new byte[1024];
string data = null;
int s = s1.Receive(be, be.Length, 0);
data += Encoding.ASCII.GetString(be, 0, s);
textBox1.Text += data;
s2.Close();
s1.Shutdown(SocketShutdown.Both);
s1.Close();
}
private void beginLisen()
{
bool done=true; IPAddress ip = IPAddress.Parse("127.0.0.1");
IPEndPoint ipe = new IPEndPoint(ip, 11000);
while (done)
{
Socket s2 = new Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp);
s2.Bind(ipe);
s2.Listen(10);
Socket s1 = s2.Accept();
byte[] be = new byte[1024];
string data = null;
int s = s1.Receive(be, be.Length, 0);
data += Encoding.ASCII.GetString(be, 0, s);
textBox1.Text += data;
s2.Close();
s1.Shutdown(SocketShutdown.Both);
s1.Close();
}
解决方案 »
- Windows Media Player 怎么获取 当前播放 的剩余时间
- 如何用c#实现一个悬浮菜单?
- 菜鸟求开源项目
- 关于Developer express LoopUpEdit控件问题
- 图片浏览的问题~~
- 高分求一解两个不同地的数据库(也不同名)但都有一张相同的表tbl_ExamFieldInfo现在就是要比较这两张表,如果下级数据库的这个表同上级
- 提一个超难的问题(至少我是一点思路都没有)
- 关于通信的一个问题!100分
- 麻烦各位告诉俺哪有C#操作Access数据库的资料,高分相送?
- 我想把打印机里的字体提取出来,谁能帮下,有酬谢
- 带参数的方法为什么不能给datetimepicker赋值了
- 请教如何将子窗口的数据传递到父窗口?
Socket s2 = new Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp);
s2.Bind(ipe);
s2.Listen(10);
byte[] be = new byte[1024];
这些,应放到循环体外。