我正在使用本教程来了解它是如何工作的: http://csharp.net-informations.com/communications/csharp-chat-server-programming.htm
(http://csharp.net-informations.com/communications/csharp-chat-client.htm)
这就是我所做的:
启动了两个Visual Studio实例:一个用于客户端,一个用于服务器端。
跑出服务器:服务器正常运行
Ran Client Side,在文本框中输入名称,按下连接按钮,这就是我在服务器程序中的这一行:
networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
ArgumentOutOfRangeException未处理。
我没有更改原始代码。有趣的是,我在两年前下载的代码相同,并且工作正常(在Windows 7上,现在我在Windows 10上)。
答案 0 :(得分:0)
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);