C# tcp 套接字(networkstream.read 不适用于 8.1)

C# tcp socket (networkstream.read won't work with 8.1)

我有一个 运行 是一个 TCP 套接字的程序。它 运行 在 windows 8.1 以下的任何东西都很好。我已经关闭了我的防火墙并设置了一切以允许此连接。

1.First 服务器在 windows 8.1
上 运行 2.The 客户端套接字确实连接。
3.The 客户端发送一个字符串 "login",以触发初始交互。
- 该字符串确实已发送。
4.The 服务器设置 networkstream.read();
时连接失败 -我在调试器中没有看到任何东西,它在其他
上也能正常工作 -系统

这里是我如何设置服务器来监听。很传统。

//倾听客户

 public String listen() {

            byte[] bytesFrom = new byte[10025];
            string dataFromClient = null;


            NetworkStream networkStream = this.clientSocket.GetStream();//get client input


         This is the line that fails{
            networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);//read client info  } -end fail

            dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);//pass client input to String
            dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));//parse to end
            //MessageBox.Show("data:" + dataFromClient);
            networkStream.Flush();
          //  networkStream.Close();
            MessageBox.Show("data:" + dataFromClient);
            return dataFromClient;
        }

使用 clientSocket.ReceiveBufferSize 创建缓冲区,因此更改:

byte[] bytesFrom = new byte[10025];

进入:

byte[] bytesFrom = new byte[clientSocket.ReceiveBufferSize];

结束从这个数组中获取缓冲区大小:

networkStream.Read(bytesFrom, 0, bytesFrom.Length);