C#tcp套接字(networkstream.read不会与8.1一起使用)
我有一个运行tcp套接字的程序。它在低于Windows8.1的任何系统上都可以正常运行。我已经关闭了防火墙,并设置了所有允许此连接的设置 1.首先,服务器在windows 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()时连接失败 -我在调试器中没有看到任何东西,而且它在其他调试器上也可以正常工作 -系统 下面是我如何设置服务器来监听的。这很传统 //听取客户的意见
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);