从 clientsocket 读取:ArgumentOutOfRangeException 未处理

Reading from clientsocket: ArgumentOutOfRangeException was unhandled

我正在使用本教程来了解它是如何工作的: http://csharp.net-informations.com/communications/csharp-chat-server-programming.htm

(http://csharp.net-informations.com/communications/csharp-chat-client.htm)

这是我所做的:

ArgumentOutOfRangeException was unhandled.

我没有更改原始代码。有趣的是我两年前下载的相同代码并且运行良好(在 Windows 7,现在我在 Windows 10)。

bytesFrom 的长度为 10025 字节。理论上的 clientSocket.ReceiveBufferSize 可能会变得比这个尺寸长(可能是由于 Window Auto-Tuning feature)。要解决此问题,请使用 clientSocket.ReceiveBufferSize:

初始化缓冲区
byte[] bytesFrom = new byte[clientSocket.ReceiveBufferSize];

另请注意,在客户端代码中,您在 getMessage() 中遇到了类似的问题。您还应该更改缓冲区初始化代码:

buffSize = clientSocket.ReceiveBufferSize;
byte[] inStream = new byte[buffSize];
serverStream.Read(inStream, 0, buffSize);