指定的参数超出范围C#
我是C#方面的新手,所以我不知道为什么在Windows 7中我的应用程序(程序)工作得很好,而在Windows Server 2012中,我在尝试从客户端获取消息时出现了此错误。C# 错误: system.argumentOutOfRangeException:指定的参数超出有效值的范围。参数名称:大小。 位于system.net.sockets.networkStream.Read(字节[]缓冲区,int32偏移量,int32大小) 发送功能:指定的参数超出范围C#,c#,windows,windows-7,windows-server-2012,C#,Windows,Windows 7,Windows Server 2012,我是C#方面的新手,所以我不知道为什么在Windows 7中我的应用程序(程序)工作得很好,而在Windows Server 2012中,我在尝试从客户端获取消息时出现了此错误。C# 错误: system.argumentOutOfRangeException:指定的参数超出有效值的范围。参数名称:大小。 位于system.net.sockets.networkStream.Read(字节[]缓冲区,int32偏移量,int32大小) 发送功能: byte[] outStream = Syste
byte[] outStream = System.Text.Encoding.ASCII.GetBytes(textBox2.Text + "$");
serverStream.Write(outStream, 0, outStream.Length);
serverStream.Flush();
NetworkStream networkStream = clientSocket.GetStream();
networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);
dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));
Console.WriteLine("From client - " + clNo + " : " + dataFromClient);
接收功能:
byte[] outStream = System.Text.Encoding.ASCII.GetBytes(textBox2.Text + "$");
serverStream.Write(outStream, 0, outStream.Length);
serverStream.Flush();
NetworkStream networkStream = clientSocket.GetStream();
networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);
dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));
Console.WriteLine("From client - " + clNo + " : " + dataFromClient);
此行中的问题:
networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
也许在这里:(int)clientSocket.ReceiveBufferSize
如何解决这个问题,你有什么想法吗?你为什么要投
clientSocket.ReceiveBufferSize
当它通常应该已经是一个int时,是否将其转换为int?()
要多大尺寸
byteFrom
初始化?它至少应该是ReceiveBufferSize的值。但是请确保在初始化一个函数和Read()之间该值不会发生变化。我现在只需要处理TCP套接字,我找到了这个示例代码,并得到了相同的错误消息。我在网上搜索了一下,以下是我发现的: 更改此项:
networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
为此:
networkStream.Read(bytesFrom, 0, bytesFrom.Length);
如果客户端出现类似错误,只需检查相同的
.Read()
部分。应用与使用.Length
属性相同的解决方案。clientSocket.ReceiveBufferSize的值是多少?我不知道,我不会更改它…byte[]bytesFrom=新字节[10025];您是使用默认的ReceiveBufferSize还是更改/增加了它?如果你做了,你把它增加到了什么?不,我没有改变它。因为我不知道在哪里。。。这是一系列的注释,而不是答案(因为此时无法回答该问题)。