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);
我有一个 运行 是一个 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);