string receiveData = "";
int recvCount;//每次读取的数据量
int availCount = 0;//获取从网络可以读取的数据量
byte[] buffer = new byte[1 * 1024];//一个4×1024bits的缓存区
do
{
availCount = CommonVariable.RongcaiSoket.Available;
if (availCount < buffer.Length)
{
recvCount = CommonVariable.RongcaiSoket.Receive(buffer, availCount, 0);
} else
{
recvCount = CommonVariable.RongcaiSoket.Receive(buffer, buffer.Length, 0);
}
availCount = CommonVariable.RongcaiSoket.Available;
if (recvCount > 0)
{
receiveData += Convert.ToBase64String(buffer);
}
} while (availCount > 0);
byte[] btable = Convert.FromBase64String(receiveData);
object table = ByteToObject(btable);//将二进制转换成object对象
return table;以上分次读取一次性传递来的数据,上述代码传递字符串时有效,但是如果传递的是datatable,则提示包含无效字符。大家看看红色地方能有什么更好的方法来连接分次读取出来的数据吗?
下午下班前结贴。。谢谢大家!!!
解决方案 »
- Winform窗体控件,BackgroundWorker问题。各位热心朋友帮忙解决下。
- 如何在不安装驱动的情况下操作.dbf文件
- C#2.0下,如何使用ORACLECLIENT连接ORACLE?
- ResponseSoapContext.Current is null?
- C++代码转C#代码问题,请高手帮帮忙,3Q!
- 请问c#里如何实现通过child对象获取parent对象?
- 如何在NHibernate中使用SetFetchMode=FetchMode.Lazy
- 水晶报表运行时登录失败
- 运行asp.net时出现这样的错误,怎么回事?
- C#的打印預覽怎么能這樣呢﹖
- 线程同步,和cache一致性的疑惑
- ASP.NET如果调用服务器上的WinForm程序?
最后转化为byte[] Convert.FromBase64String(receiveData); 也就是把这两个操作都放到循环外来做。
2,发送方收到接收方的回应后再发送内容;
3,接收方将收到的数据放入字节数组中,最后再回原成对象。不要转换来转换去的。