无法从传输连接中读取数据: 一个封锁操作被对 WSACancelBlockingCall 的调用中断?

longqi293 2008-07-23 06:22:23
小弟开发的是一个基于tcpclient tcplistener的网络聊天程序,采用了委托/回调的多线程机制,连接服务器均正常,但是当客户端断开连接时,就会产生如题的异常,下面是部分代码:
private void ReceiveData()//由请求连接按钮启动的线程
{
while (true)
{
netStream = client.GetStream();
byte[] bytes = new byte[64];
netStream.Read(bytes, 0, bytes.Length);//异常出现地方
string msg = Encoding.UTF8.GetString(bytes);
AddListBoxItem(msg);
}
}
希望大虾帮忙啊
...全文
3610 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxl693946569 2012-03-15
  • 打赏
  • 举报
回复
原因大概是客户端关闭socket连接时,服务器这边netStream.Read(bytes, 0, bytes.Length);仍在读取状态。

lsbywzh 2011-04-10
  • 打赏
  • 举报
回复
private void Form1_Load(object sender, EventArgs e)
{
thread.Abort();
client.Close();
}
JavaConquer 2009-08-12
  • 打赏
  • 举报
回复
从你的代码上看,可能是客户端关闭时,连接断开了,可是线程并没有立刻停止,所以会显示异常
JavaConquer 2009-08-12
  • 打赏
  • 举报
回复
sdfs
longqi293 2008-07-23
  • 打赏
  • 举报
回复
自己顶,我知道有点难了,还是希望大虾能现身
longqi293 2008-07-23
  • 打赏
  • 举报
回复
ding qi
longqi293 2008-07-23
  • 打赏
  • 举报
回复
定义的委托:
delegate void AddListBoxItemCallback(string text);
AddListBoxItemCallback listBoxCallback;
public Form1()
{
InitializeComponent();
listBoxCallback = new AddListBoxItemCallback(AddListBoxItem);
}
private void AddListBoxItem(string text)
{
//如果listBoxReceive被不同的线程访问则通过委托处理;
if (listBox1.InvokeRequired)
{
this.Invoke(listBoxCallback, text);
}
else
{
listBox1.Items.Add(text);
listBox1.SelectedIndex = listBox1.Items.Count - 1;
}
}
kbryant 2008-07-23
  • 打赏
  • 举报
回复
帮你顶
longqi293 2008-07-23
  • 打赏
  • 举报
回复
请求连接的代码在这里:
private void button1_Click(object sender, EventArgs e)
{
try
{
int port = int.Parse(textBox2.Text);
client = new TcpClient();
IPAddress remoteIP = IPAddress.Parse(textBox1.Text);
client.Connect(remoteIP, port);
statusBar1.Text = "已经连接到服务器";
Thread thread = new Thread(new ThreadStart(ReceiveData));
thread.IsBackground = true;
thread.Start();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧