gpt4 book ai didi

c# - 套接字接收缓冲区大小

转载 作者:行者123 更新时间:2023-11-30 13:41:46 24 4
gpt4 key购买 nike

有没有办法确定 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);

最佳答案

用于接收数据的缓冲区大小取决于应用程序或协议(protocol)。在该语言中没有办法告诉您接收缓冲区的大小应该是多少。也没有任何可以使用的套接字函数表示“您需要 23867 字节才能接收此消息”。通常,您的应用程序必须根据协议(protocol)计算出接收缓冲区的大小以及如何处理它。通常,协议(protocol)将:

  • 指定消息中的字节数。
  • 指定一个终止字符(例如 hdlc 使用 0x7e 来指示消息的结尾)

这样做的结果是您的应用程序可能需要处理拆分消息。例如,服务器可能会发送一条 2000 字节的消息,但您的接收缓冲区只有 1000 字节,您必须编写一些代码来维护状态,告诉您消息是已完成还是部分完成。

关于c# - 套接字接收缓冲区大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4600788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com