首页 文章

TcpClient是否使用单个连接?如何发送第二条消息?

提问于
浏览
-1

我有一个TcpClient对象,可以连接到外部程序 . 我可以发送一条消息(xml序列化消息) . 但是一旦我关闭我的网络流,我的TcpClient就会关闭并处理掉 . 第二次尝试通过我的TcpClient发送消息时,我收到错误“无法访问已处置的对象,Net.Sockets.Socket” .

我是新手使用TcpClient,但我的印象是我将与其他程序连接一次,然后能够在我的程序的生命周期中来回传递消息,并在关闭我的程序之前简单地断开TcpClient .

我能够发送多条消息的唯一方法是,如果我是TcpClient,并在发送消息之前再次执行连接 . 这是发送多条消息的正确方式吗?我的经理和我只是对TcpClient的错误印象?

我对TcpClient的另一个印象是,一旦连接,我就能够从其他程序接收消息 . 所以我的程序将坐在那里什么也不做,然后收到一条TcpClient消息(一些定义的xml消息),说明库存已被更改 . 这是可能的还是我需要为这种类型的功能设置TcpListener?

请不要试图以不同的方式给我留下印象 . 我的印象就是电话交谈 . TcpClient是电话,我通过拨打另一个电话号码 Build 连接 . 然后我会连接并能够来回交谈 . 在我们其中一个人重新开始谈话之前,可能会有几分钟的停顿 . 然后在工作日结束时挂断电话 .

但是在与TcpClient合作一段时间之后,我开始了一个对讲机对话 . 我通过TcpClient连接,这是我按下对讲机按钮 . 我说,关闭网络流是我释放按钮 . 我可以从对话的另一边的人那里听到回复,但是当我再次按下按钮时它会改变频率,这是一个全新的对话,要求我使用tcpClient .

EDIT

所有不说关闭流的人都是对的 . 我一直关闭流的原因是因为接收器软件会处理我的消息 . 但接收软件也在寻找包含在ASCII STX和ETX字符中的消息 . 如果我包裹了我的消息,将其发送出去并且看到他们开始处理消息,我的流仍然打开 .

1 回答

  • 0

    所有不说关闭流的人都是对的 .

    我一直关闭流的原因是因为接收软件会处理我的消息 . 但是如果接收软件包含在ASCII“STX”和“ETX”字符中,它也会处理我的消息 .

    我的最终问题是对TcpClient有点无知,对接收软件的协议有点无知 .

相关问题