Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.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# StreamReader.Readline错误:无法从传输连接读取数据_C#_Tcpclient - Fatal编程技术网

C# StreamReader.Readline错误:无法从传输连接读取数据

C# StreamReader.Readline错误:无法从传输连接读取数据,c#,tcpclient,C#,Tcpclient,尝试使用TCP连接从服务器检索邮件时出错: 这是服务器部件上的代码: public void StartServer() { _tcpListener = new TcpListener(IPAddress.Parse(_serverSettings.IpAddress), _serverSettings.Port); _tcpListener.Start(); _tcpClient = _tcpListener.AcceptTcpClient(); _tcpC

尝试使用TCP连接从服务器检索邮件时出错:

这是服务器部件上的代码:

public void StartServer()
{
     _tcpListener = new TcpListener(IPAddress.Parse(_serverSettings.IpAddress), _serverSettings.Port);
    _tcpListener.Start();
    _tcpClient = _tcpListener.AcceptTcpClient();
    _tcpClient.NoDelay = true;
    _networkStream = _tcpClient.GetStream();
    _streamWriter = new StreamWriter(_tcpClient.GetStream());
    while (true)
    {
        try
        {
            var buffer = new byte[1024];
            _networkStream.Read(buffer, 0, buffer.Length);
            var received = buffer.Count(b => b != 0);

            var request = Encoding.UTF8.GetString(buffer, 0, received);
            _streamWriter.WriteLine($@"Hardware Handler Server\r\n");
            _streamWriter.Flush();
        }
        catch (Exception e)
        {
            _streamWriter.WriteLine(e.ToString());
        }
    }
}
这是客户端的代码:

private void ConnectToServer(object sender, EventArgs e)
{
    try
    {
        _tcpClient = new TcpClient(txtServerIpAddress.Text, Convert.ToInt32(txtServerPort.Text));
        _networkStream = _tcpClient.GetStream();
        _networkStream.ReadTimeout = 2000;
        _streamReader = new StreamReader(_networkStream);
        ListenToMessagesFromServer();
    }
    catch (Exception exception)
    {
        AddInformation(exception.Message, true);
    }
}

public void SendMessage(string message)
{
    var sendData = Encoding.ASCII.GetBytes(message);
    _networkStream.Write(sendData, 0, sendData.Length);
    _networkStream.Flush();
}

public void ListenToMessagesFromServer()
{
    var response = _streamReader.ReadLine();
    Console.WriteLine($@"{response}", true);
}
我在ConnectToServer()和SendMessage()中没有得到任何错误,但是当我在“var response=\u stereamReader.ReadLine()”上访问ListentMessages客户端时,我得到了错误

Unable to read data from the transport connection: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
我也试过这种方法

public void ListenToMessagesFromClients()
{
    while (true)
    {
        var buffer = new byte[1024];
        _networkStream.Read(buffer, 0, buffer.Length);
        var received = buffer.Count(b => b != 0);
        var messageFromServer = Encoding.UTF8.GetString(buffer, 0, received);
    }
}

您要运行多少个客户机?您的服务器代码将只接受一个客户端一次。需要重新启动才能接受另一个。您需要重写服务器代码以同时接受多个客户机,甚至每个服务器调用接受多个客户机。