Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
指定的参数超出范围C#_C#_Windows_Windows 7_Windows Server 2012 - Fatal编程技术网

指定的参数超出范围C#

指定的参数超出范围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

我是C#方面的新手,所以我不知道为什么在Windows 7中我的应用程序(程序)工作得很好,而在Windows Server 2012中,我在尝试从客户端获取消息时出现了此错误。C#

错误:

system.argumentOutOfRangeException:指定的参数超出有效值的范围。参数名称:大小。 位于system.net.sockets.networkStream.Read(字节[]缓冲区,int32偏移量,int32大小)

发送功能:

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还是更改/增加了它?如果你做了,你把它增加到了什么?不,我没有改变它。因为我不知道在哪里。。。这是一系列的注释,而不是答案(因为此时无法回答该问题)。