holymaple
2015-01-12 16:04C# socket networkstream 接收数据
最近在做c/s,客户端用C#的Socket进行通信。接收数据开单独的接收线程使用networkstream进行接收
接收的方法大体上跟网上流传的一样
do
{
int readSize = mNetworkstream.Read(bytes, 0, 1024);
if (readSize > 0)
{
//do sth
}
}while(mNetworkstream.DataAvailable)
这样接收局内网或者单机没问题,但是放到外网测试网络不稳定就接收不全。
搜集很多资料,也试过在发送Socket包之前加个包大小,然后在while中增加判断是否读到包的大小,可是一样接不全,中间好像掺杂了一些没用的数据?
我一个包很容易超过byte[10240],而且要整个包接收完才能处理数据。
请问C# Socket使用networkstream怎样才能接收完全呢?
ps:也有听说过异步networkstream.beginread接收。鉴于网上一大抄,各种人贴各种代码片段根本就没用。有些有用但只能接收一次。。。
如果有beginread相关代码也希望大牛们贴出来参考一下,不要贴代码片段。。。
谢谢了~
- 点赞
- 回答
- 收藏
- 复制链接分享
4条回答
为你推荐
- asp.net接收post数据报错:由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
- httpwebrequest
- 服务器
- asp.net
- 2个回答
- Java与C#进行socket通讯 出现乱码 怎么办
- 乱码
- 通讯
- 2个回答
- 安卓和C# 用TCP通信发送数据
- android
- tcp
- c#
- 3个回答