Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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#tcp套接字(networkstream.read不会与8.1一起使用)_C#_Sockets_Tcp - Fatal编程技术网

C#tcp套接字(networkstream.read不会与8.1一起使用)

C#tcp套接字(networkstream.read不会与8.1一起使用),c#,sockets,tcp,C#,Sockets,Tcp,我有一个运行tcp套接字的程序。它在低于Windows8.1的任何系统上都可以正常运行。我已经关闭了防火墙,并设置了所有允许此连接的设置 1.首先,服务器在windows 8.1上运行 2.客户端套接字没有连接 3.客户端发送一个字符串“login”,以触发初始交互。 -确实会发送该字符串。 4.服务器设置networkstream.read()时连接失败 -我在调试器中没有看到任何东西,而且它在其他调试器上也可以正常工作 -系统 下面是我如何设置服务器来监听的。这很传统 //听取客户的意见

我有一个运行tcp套接字的程序。它在低于Windows8.1的任何系统上都可以正常运行。我已经关闭了防火墙,并设置了所有允许此连接的设置

1.首先,服务器在windows 8.1上运行
2.客户端套接字没有连接
3.客户端发送一个字符串“login”,以触发初始交互。
-确实会发送该字符串。
4.服务器设置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];
进入:

结束从该数组获取缓冲区大小:

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

定义“失败”。。。它会引发异常吗?例外情况是什么?它不返回任何数据吗?看看代码,既然没有从读取中捕获返回值,您怎么知道返回了多少字节呢?这就是问题所在,它破坏了try/catch。但每当我从编译器运行它时,我在调试中什么也看不到。我整个晚上都在尝试这个。事实上,我确实捕获了数据。请看下一行的Bytesform,Cageman怪石队。这很有魅力。我已登录并在Windows 8上推送资源清册。很棒的东西。为什么我预定义数组与让客户端定义数组有什么关系?我知道如果客户端超出范围,就会出现问题,但它似乎应该可以工作,并且在xp、vista和7上也可以工作。这是否是windows 8.1工程师的一个例子,他们说从客户端获取阵列是一种更好的做法,因此不再允许您预定义阵列?
networkStream.Read(bytesFrom, 0, bytesFrom.Length);