2015-09-18 24 views
0

我想创建一个套接字与服务器的连接。为此,我传递一个XML并将其存储在字符串ngconnect中。现在,而debbuging代码 我发现serverstream.Write异常的长度='serverStream.Length'抛出一个异常'System.NotSupportedException'

“serverStream.Length”扔类型的异常的“System.NotSupportedException”

什么可能是这样的原因异常,我如何删除它们。

 private void button1_Click(object sender, EventArgs e) 
     { 
      portadd = textBox2.Text; 

      ip = textBox1.Text; 
      port = Convert.ToInt32(portadd); 
      clientSocket.Connect(ip, port); 
      NetworkStream serverStream = clientSocket.GetStream(); 
      byte[] outStream = System.Text.Encoding.ASCII.GetBytes(ngconnect); 
      serverStream.Write(outStream, 0, 200); 
      serverStream.Flush(); 

      byte[] inStream = new byte[10025]; 
      serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize); 
      string returndata = System.Text.Encoding.ASCII.GetString(inStream); 
      msg(returndata); 
      textBox3.Focus(); 

    } 
+0

请显示*你在哪里得到异常(并且请同时改进你的代码格式)。另外,您忽略了'Read'的返回值,这绝不是一个好主意 - 并且您还在UI线程中执行IO,这会在UI执行IO时使UI无响应。 –

+0

我在serverStream.write(outStream,0,200)处得到异常; –

+0

请在问题中填写完整的堆栈跟踪。 –

回答

1

如果我是正确的,应用程序没有抛出异常,但你调试,检查serverStream看到在调试器中的例外。

这是正常行为 - Visual Studio尝试显示所有属性值,并且NetworkStream不支持Length属性。有关更多信息,请参见the MSDN

NotSupportedException:从Stream派生的类不支持查找。

您可以检查任何StreamCanSeek属性来验证它是否支持求,所以Length财产。

+0

是的,你是对的。这是一个内部例外。我刚开始知道我试图连接的服务器被设置为读取数据的前4个字节,作为没有发送的流的长度。 –