socket异步传输时BeginReceive()的问题

cyclejdm 2008-12-27 08:46:49
private void ReceiveCallBack(IAsyncResult iar)
{
DataObject state = (DataObject)iar.AsyncState;
int sent = state.WorkSocket.EndReceive(iar);
if (sent > 0)
{
state.sb.Append(Encoding.ASCII.GetString(state.buffer));
state.WorkSocket.BeginReceive(state.buffer, 0, state.buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallBack), state);
}
else
{
if (state.sb.Length > 0)
{
string s = state.sb.ToString();
}
}
}

上面的BeginReceive是用来处理一次没有将数据全部接收完的情况的,本人初学,是照着msdn上写的,但是调试的时候发现这段程序不对,请问一下这段程序到底是如何执行的,好像永远也执行不到else那段语句!
...全文
128 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
长沙三毛 2008-12-27
  • 打赏
  • 举报
回复
这段程序应该没有问题,想执行else的代码,请调用state.WorkSocket.Shutdown()或Close()。
另,请参考:可扩展多线程异步Socket服务器框架EMTASS 2.0

111,130

社区成员

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

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

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