我有一个TcpClient对象,可以连接到外部程序。我可以发送一条消息(xml序列化消息)。但是,一旦我关闭网络流,我的TcpClient就会关闭并处理。第二次尝试通过TcpClient发送消息时,出现错误“无法访问已处置的对象Net.Sockets.Socket”。
我是使用TcpClient的新手,但给我的印象是,我将与另一个程序连接一次,然后能够在程序的整个生命周期内来回传递消息,并在关闭程序之前简单地断开TcpClient的连接。
我能够发送多条消息的唯一方法是,如果我新建了TcpClient,然后在发送消息之前再次执行连接。这是发送多封邮件的正确方法,而我和我的经理只是在TcpClient的错误印象下?
我对TcpClient的另一印象是,一旦连接,我将能够从其他程序接收消息。因此,我的程序将坐在那里什么也不做,然后接收到TcpClient消息(某些已定义的xml消息),说明库存已更改。这可能吗,或者我需要设置TcpListener才能使该类型的功能正常工作?
请不要让此示例使您感到困惑,否则请不要让我以不同的方式来传达我的印象。我印象中的一个例子是电话交谈。TcpClient是电话,我通过拨打另一个电话号码进行连接。然后,我将可以连接并且可以来回交谈。在我们其中一位可能再次开始对话之前,可能需要等待几分钟。然后在工作日结束时挂断电话。
但是在与TcpClient合作一段时间后,我感到这是对讲机对话。我通过TcpClient进行连接,这是我按下对讲机按钮的过程。我在说,网络流的关闭是我释放按钮。我可以在对话的另一端听到该人的回音,但再次按下该按钮,它就会改变频率,这是一个全新的对话,需要我重新安装tcpClient。
编辑
所有人都说不关闭信息流是正确的。我一直关闭流的原因是因为接收方软件随后会处理我的消息。但是接收软件也在寻找一条消息,将其包装为ASCII STX和ETX字符。如果我包装了我的消息,则将其一起发送,瞧,他们开始处理消息,而我的流仍处于打开状态。
所有人都说不关闭信息流是正确的。
我一直关闭流的原因是因为接收软件随后会处理我的消息。但是,如果接收到的信息使用ASCII“ STX”和“ ETX”字符包装,则接收方软件也会处理我的信息。
我的最终问题是对TcpClient有点无知,而对接收软件的协议则无知。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句