TcpClient 是单连接使用吗?如何发送第二条消息?
Is TcpClient a single connection use? How do I send a second message?
我有一个可以连接到外部程序的 TcpClient 对象。我可以发送一条消息(xml 序列化消息)。但是一旦我关闭我的网络流,我的 TcpClient 就会关闭并进行处理。第二次尝试通过我的 TcpClient 发送消息时出现错误 "cannot access a disposed object, Net.Sockets.Socket".
我是使用 TcpClient 的新手,但我的印象是我会与其他程序连接一次,然后能够在我的程序的整个生命周期内来回传递消息,并在关闭我的程序之前简单地断开 TcpClient。
我能够发送多条消息的唯一方法是 新 TcpClient,并在发送我的消息之前再次执行连接。这是发送多条消息的正确方式吗?我和我的经理只是对 TcpClient 有错误的印象?
我对 TcpClient 的另一个印象是,一旦连接,我就能够从其他程序接收消息。所以我的程序会坐在那里什么也不做,然后收到一条 TcpClient 消息(一些定义的 xml 消息),说明库存已更改。这可能吗,或者我是否需要为该类型的功能设置 TcpListener?
请不要让这个例子让您感到困惑,或者我只是想以不同的方式表达我的印象。
phone 对话是我印象的一个例子。 TcpClient 是 phone,我通过调用另一个 phone 号码建立连接。然后我就可以连接起来并能够来回交谈。在我们中的一个人再次开始对话之前,可能会有几分钟的停顿。然后在工作日结束时挂断 phone。
但在使用 TcpClient 一段时间后,我得到的印象是它是一个对讲机对话。我通过 TcpClient 连接,这是我按下对讲机按钮。我说话,网络流的关闭是我释放按钮。我可以听到对话另一边的人的回音,但只要我再次按下按钮,它就会改变频率,这是一个全新的对话,需要我 new tcpClient。
编辑
大家说的不要关闭流是对的。我一直关闭流的原因是因为接收器软件随后会处理我的消息。但是接收软件也在寻找要用 ASCII STX 和 ETX 字符包装的消息。如果我包装了我的消息,将其发送出去,你看他们开始处理消息,而我的流仍然打开。
大家说的不要关闭流是对的。
我一直关闭流的原因是接收软件会处理我的信息。但是如果消息被包裹在 ASCII "STX" 和 "ETX" 字符中,接收软件也会处理我的消息。
我的最终问题是对 TcpClient 有点无知,对接收软件的协议也有点无知。
我有一个可以连接到外部程序的 TcpClient 对象。我可以发送一条消息(xml 序列化消息)。但是一旦我关闭我的网络流,我的 TcpClient 就会关闭并进行处理。第二次尝试通过我的 TcpClient 发送消息时出现错误 "cannot access a disposed object, Net.Sockets.Socket".
我是使用 TcpClient 的新手,但我的印象是我会与其他程序连接一次,然后能够在我的程序的整个生命周期内来回传递消息,并在关闭我的程序之前简单地断开 TcpClient。
我能够发送多条消息的唯一方法是 新 TcpClient,并在发送我的消息之前再次执行连接。这是发送多条消息的正确方式吗?我和我的经理只是对 TcpClient 有错误的印象?
我对 TcpClient 的另一个印象是,一旦连接,我就能够从其他程序接收消息。所以我的程序会坐在那里什么也不做,然后收到一条 TcpClient 消息(一些定义的 xml 消息),说明库存已更改。这可能吗,或者我是否需要为该类型的功能设置 TcpListener?
请不要让这个例子让您感到困惑,或者我只是想以不同的方式表达我的印象。
phone 对话是我印象的一个例子。 TcpClient 是 phone,我通过调用另一个 phone 号码建立连接。然后我就可以连接起来并能够来回交谈。在我们中的一个人再次开始对话之前,可能会有几分钟的停顿。然后在工作日结束时挂断 phone。
但在使用 TcpClient 一段时间后,我得到的印象是它是一个对讲机对话。我通过 TcpClient 连接,这是我按下对讲机按钮。我说话,网络流的关闭是我释放按钮。我可以听到对话另一边的人的回音,但只要我再次按下按钮,它就会改变频率,这是一个全新的对话,需要我 new tcpClient。
编辑
大家说的不要关闭流是对的。我一直关闭流的原因是因为接收器软件随后会处理我的消息。但是接收软件也在寻找要用 ASCII STX 和 ETX 字符包装的消息。如果我包装了我的消息,将其发送出去,你看他们开始处理消息,而我的流仍然打开。
大家说的不要关闭流是对的。
我一直关闭流的原因是接收软件会处理我的信息。但是如果消息被包裹在 ASCII "STX" 和 "ETX" 字符中,接收软件也会处理我的消息。
我的最终问题是对 TcpClient 有点无知,对接收软件的协议也有点无知。