C# NetworkStream.Read()不';t工作并抛出ArgumentOutOfRangeException
只是尝试创建一个聊天服务器客户端C# NetworkStream.Read()不';t工作并抛出ArgumentOutOfRangeException,c#,sockets,tcp,client-server,chat,C#,Sockets,Tcp,Client Server,Chat,只是尝试创建一个聊天服务器客户端 这是正在等待客户端连接的服务器(可选)* 然后,客户端连接到服务器(可选)* 然后,在客户端,我从windows窗体发送消息,按钮单击事件执行以下操作: NetworkStream serverStream = clientSocket.GetStream(); byte[] outStream = System.Text.Encoding.ASCII.GetBytes(textBox2.Text + "$"); serverStream.Write(out
NetworkStream serverStream = clientSocket.GetStream();
byte[] outStream = System.Text.Encoding.ASCII.GetBytes(textBox2.Text + "$");
serverStream.Write(outStream, 0, outStream.Length);
serverStream.Flush();
//this goes to the server ------> to the part (4)
//returning from the server <------
byte[] inStream = new byte[10025];
serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize);
string returndata = System.Text.Encoding.ASCII.GetString(inStream);
textBox2.Text = "";
textBox2.Focus();
字节,而不是从.Length传递clientSocket。ReceiveBufferSize
参数,OutOfRangeException表示偏移量或计数为负(第二个和第三个参数),或者“size(count)”参数大于缓冲区长度减去“offset”参数的值
我会尝试将bytesFrom.Length
传递给clientSocket.ReceiveBufferSize
而不是clientSocket.ReceiveBufferSize
传递给networkStream.Read
。clientSocket.ReceiveBufferSize
的值是多少?应该传递bytesFrom.Length
而不是clientSocket.ReceiveBufferSize
到networkStream.Read
。clientSocket.ReceiveBufferSize
的值是多少?
System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient();
clientSocket.Connect("127.0.0.1", 8888);
NetworkStream serverStream = clientSocket.GetStream();
byte[] outStream = System.Text.Encoding.ASCII.GetBytes(textBox2.Text + "$");
serverStream.Write(outStream, 0, outStream.Length);
serverStream.Flush();
//this goes to the server ------> to the part (4)
//returning from the server <------
byte[] inStream = new byte[10025];
serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize);
string returndata = System.Text.Encoding.ASCII.GetString(inStream);
textBox2.Text = "";
textBox2.Focus();
while ((true))
{
try
{
requestCount = requestCount + 1;
NetworkStream networkStream = clientSocket.GetStream();
byte[] bytesFrom = new byte[10025];
if (networkStream.DataAvailable)
{
**networkStream.Read(bytesFrom, 0, (int) clientSocket.ReceiveBufferSize);**
string dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);
dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));
Console.WriteLine(" >> Data from client - " + dataFromClient);
string serverResponse = "Last Message from client" + dataFromClient;
Byte[] sendBytes = Encoding.ASCII.GetBytes(serverResponse);
networkStream.Write(sendBytes, 0, sendBytes.Length);
networkStream.Flush();
Console.WriteLine(" >> " + serverResponse);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}