客户端编码
TcpClient tcpclnt = new TcpClient("192.157.1.1", 8001);
Stream stm = tcpclnt.GetStream();
byte[] bites = new byte[dataLength];
// assigning values for bites
stm.Write(clientdata, 0, clientdata.Length);
服务器端编码
TcpListener listener = new TcpListener(IPAddress.Any, 8001);
listener.Start(10);
Socket soc = listener.AcceptSocket();
byte[] bites = new byte[1000];
int avail = soc.Available;
int receivedBytesLen = soc.Receive(bites);
在流上写入clientdata之后也在服务器端soc.Available为零。所以服务器无法读取数据。有什么问题?
答案 0 :(得分:2)
数据被缓冲。客户必须写更多。或关闭流。
答案 1 :(得分:2)
NetworkStream.Flush()实际上并没有在.net 4.0中实现,因为msdn:
刷新流中的数据。此方法保留供将来使用。
您的问题可能是由nagle algorithm引起的,可以防止发送少量数据以减少拥塞。您可以尝试通过在tcpClient对象上设置以下属性来禁用它:
tcpClient.NoDelay = true;
tcpClient.Client.NoDelay = true;
如果您遇到问题,还可以结帐networkComms.net这是一个随时可用的解决方案。
答案 2 :(得分:-2)
在stm.Write(...)
添加呼叫stm.Flush()
后,数据将刷新到网络。