C# StreamReader.Readline错误:无法从传输连接读取数据
尝试使用TCP连接从服务器检索邮件时出错: 这是服务器部件上的代码: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
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);
}
}
您要运行多少个客户机?您的服务器代码将只接受一个客户端一次。需要重新启动才能接受另一个。您需要重写服务器代码以同时接受多个客户机,甚至每个服务器调用接受多个客户机。