c# Socket BinaryReader接收流的问题

ruffianly 2010-05-24 11:48:19
private void Listen()
{
_socket.Bind(_ipPoint);
_socket.Listen(200);
while (IsExit)
{
allDone.Reset();
_socket.BeginAccept(new AsyncCallback(ReadCallBack), _socket);
allDone.WaitOne();
}
}

private void ReadCallBack(IAsyncResult ar)
{
Socket socket = (Socket)ar.AsyncState;
Socket ClientSocket = socket.EndAccept(ar);
allDone.Set();
}
如果用socket.Receive 方法只能接收byte数组。

想请问下在如何用回调的方法来接收客户端发过来的数据流(长连接) 例:

NetworkStream stream = new NetworkStream(ClientSocket, true);
BinaryReader br = new BinaryReader(stream);

现在用while方法太占用资源。可不可以用类似于 socket.Receive里回调的方法实现?
...全文
218 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qldsrx 2010-05-24
  • 打赏
  • 举报
回复
网络上传输的是字节数组,虽然微软对TCP这种带有长连接性质的传输提供了NetworkStream的流处理,但是不建议高级应用中使用,因为虽然它视为流处理了,但是并不能像流那样工作,出了问题很难排查,传输过程中也很难控制,只能用在简单的用途。
所以你还是使用Socket的字节传输吧,如果不从实际出发,一味追求简单化,不从底层传输原理考虑,是写不好程序的。
skep99 2010-05-24
  • 打赏
  • 举报
回复
while会阻塞,怎么占用资源了?
wl_ldy 2010-05-24
  • 打赏
  • 举报
回复
帮顶了。。。
-小蕾- 2010-05-24
  • 打赏
  • 举报
回复
帮顶!!!期待高手。。。
ruffianly 2010-05-24
  • 打赏
  • 举报
回复
没人理我呢?

111,118

社区成员

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

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

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