gpt4 book ai didi

c# - TcpClient 已建立,但 TcpClient.getStream() 失败

转载 作者:可可西里 更新时间:2023-11-01 02:52:20 38 4
gpt4 key购买 nike

用于同步消息交换的我的客户端类:

public class AsClient
{
private TcpClient connection;

public AsClient(int serverPort, String ip)
{
connection = new TcpClient(ip, port);
}

public AsMessage sendMessage(AsMessage message)
{
System.Diagnostics.Debug.WriteLine("Connected: " + connection.Connected);
NetworkStream ns = connection.GetStream();

StreamReader reader = new StreamReader(ns);
StreamWriter writer = new StreamWriter(ns);

// Send Message:
String msgToSendEncoded = message.encode();
writer.WriteLine(msgToSendEncoded);
writer.WriteLine("\n"); // each message is terminated by a paragraph
writer.Flush();

// Receive Message:
String msgReceivedRaw = reader.ReadLine();
AsMessage response = AsMessage.decode(msgReceivedRaw);

reader.Dispose();
writer.Dispose();

ns.Close();

return response;
}
}

如果我调试这个应用程序,发送的第一条消息和接收到的响应运行良好,但是当我想发送第二条消息时,TcpClient.getStream() 失败并出现 InvalidOperationException,表明连接未建立了。

问题是我没有主动关闭任何地方的连接。如果我在调用 getStream() 之前放置 connection.Connect(host,port),它将失败,但套接字仍处于连接状态,即使 connection.Connected 为 false。

有解决这个问题的想法吗?

最佳答案

根据我的经验,Dispose 会关闭底层流。

因此您关闭了 Dispose 上的连接。

关于c# - TcpClient 已建立,但 TcpClient.getStream() 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17834693/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com