我有一个运行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;
}
答案 0 :(得分:0)
使用clientSocket.ReceiveBufferSize创建缓冲区,所以更改:
byte[] bytesFrom = new byte[10025];
成:
byte[] bytesFrom = new byte[clientSocket.ReceiveBufferSize];
结束从这个数组中获取buffersize:
networkStream.Read(bytesFrom, 0, bytesFrom.Length);