C#tcp socket(networkstream.read不适用于8.1)

时间:2015-05-16 05:18:54

标签: c# sockets tcp

我有一个运行tcp套接字的程序。它适用于Windows 8.1以下的任何设备。我已经关闭了防火墙并设置了所有内容以允许此连接。

1.首先服务器在Windows 8.1上运行 2.客户端套接字确实连接。
3.客户端发送字符串“login”,以触发初始交互     - 该字符串确实被发送 4.当服务器设置networkstream.read();
时,连接失败    - 我没有在调试器中看到任何东西,并且它在其他方面再次正常工作   -systems

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

// LISTENS TO CLIENT

 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;
        }

1 个答案:

答案 0 :(得分:0)

使用clientSocket.ReceiveBufferSize创建缓冲区,所以更改:

byte[] bytesFrom = new byte[10025];

成:

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

结束从这个数组中获取buffersize:

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