【发布时间】:2019-06-24 18:59:13
【问题描述】:
我正在开发一个服务器,该服务器旨在接受安卓手机发送的响应,然后处理结果,但是我一直遇到一个持久性问题“现有连接被远程主机强行关闭”
奇怪的是,我有一个完美运行的聊天应用程序(服务器/客户端)。该实例与此实例的唯一区别在于,Android 手机连接到无线接入点并以无线方式发送数据,而聊天应用程序是有线的。
我的代码在这里:
服务器:
private static void StartServer()
{
TcpListener listener = new TcpListener(IPAddress.Parse(SERVER_IP), PORT_NO);
listener.Start();
while (true)
{
using (TcpClient client = listener.AcceptTcpClient())
{
using (NetworkStream stream = client.GetStream())
{
byte[] buffer = new byte[client.ReceiveBufferSize];
int bytesRead = stream.Read(buffer, 0, client.ReceiveBufferSize);
string dataReceived = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine($"Received: {dataReceived}");
Thread staThread = new Thread(() => PasteText(dataReceived));
staThread.SetApartmentState(ApartmentState.STA);
staThread.Start();
}
}
}
}
客户:
private void SendToServer(string resultToSend)
{
using (TcpClient client = new TcpClient(SERVER_IP, PORT_NO))
{
using (NetworkStream stream = client.GetStream())
{
byte[] bytesToSend = ASCIIEncoding.ASCII.GetBytes(resultToSend);
stream.Write(bytesToSend, 0, bytesToSend.Length);
}
}
}
关于同一主题还有其他问题,但我的情况有点不同并且更专业。上面的代码直接从我一年前创建的服务器/客户端复制而来,它也是一个 android 应用程序,它可以正常工作。这就是为什么代码不再正常工作如此令人惊讶的原因。
它似乎也偶尔有效,偶尔无效。所以通过做一个小的改变(比如在客户端连接后添加一个延迟)会让服务器工作一段时间,但最终它会停止工作。它可能一天不工作,但第二天它会完美地工作。
我有wireshark,但我不确定如何解释数据包。你可以在这里看到它们,192.168.0.52是安卓手机的ip,pc021是服务器运行的设备。
任何帮助将不胜感激,因为我已经尝试了此处发布的所有其他解决方案,但除了错误消息相同之外,它们似乎与我的问题无关。
【问题讨论】:
标签: c# server tcpclient tcplistener