有没有办法在c#中确定TCPIP套接字的接收缓冲区大小.我正在向服务器发送一条消息,并期待一个我不确定接收缓冲区大小的响应.
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("192.125.125.226"),20060);
Socket server = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
server.Connect(ipep);
String OutStr= "49|50|48|48|224|48|129|1|0|0|128|0|0|0|0|0|4|0|0|32|49|50";
byte[] temp = OutStr.Split('|').Select(s => byte.Parse(s)).ToArray();
int byteCount = server.Send(temp);
byte[] bytes = new byte[255];
int res=0;
res = server.Receive(bytes);
return Encoding.UTF8.GetString(bytes);
Run Code Online (Sandbox Code Playgroud)
用于接收数据的缓冲区大小取决于应用程序或协议.在语言中没有办法告诉你接收缓冲区的大小应该是多少.也没有任何套接字函数可以使用"你需要一个23867字节来接收这条消息".通常,您的应用程序必须从协议中确定接收缓冲区的大小以及如何处理它.通常协议将:
这样做的结果是您的应用程序可能需要处理拆分消息.例如,服务器可能会发送一个2000字节的消息,但您的接收缓冲区只有1000字节,您必须编写一些代码来维护状态,告诉您是否已完成消息或部分完成.
归档时间: |
|
查看次数: |
8915 次 |
最近记录: |