套接字发送到另一个应用程序,监听它的响应并继续

本文关键字:响应 继续 监听 另一个 应用程序 套接字 | 更新日期: 2023-09-27 18:10:25

我试图理解这个特定的场景是如何工作的,因为我以前从未做过套接字编程。我将尝试用伪代码的方式来解释它。

在"应用程序"服务器上有一个应用程序,它将执行处理/计算。数据规范将由多个客户机提供给这个"应用程序"服务器。一旦处理完成,它将把数据返回给客户端。

场景如下:客户端将有数据,它需要发送到服务器来执行处理/计算。我认为它将使用TCPClient(不确定?)发送数据到"应用程序"服务器。"应用程序"服务器然后将结果发送回客户端,然后客户端代码将继续执行该过程。

我现在关心的是它必须等到"应用程序"服务器发送响应。下面是我的问题:

  1. 在我做发送代码之后,我现在可以去代码,它将从"应用程序"服务器侦听响应,如do-while循环,它在继续之前等待响应?

  2. 我不确定我在这里是否使用了正确的术语,但如果有多个客户端击中"应用程序"服务器,然后客户端必须侦听响应-我可以假设我需要一个进程来识别来自"应用程序"服务器的哪个响应是针对特定客户端吗?

我还没有写代码,但只是在考虑如何处理这个场景。

提前感谢您的建议

套接字发送到另一个应用程序,监听它的响应并继续

首先,我建议阅读一些关于套接字编程是如何工作的。

套接字编程本质上是异步的,因此事件驱动的方法可能会更好(是的,您可以使用阻塞函数,但不建议使用)。

我不建议使用TCPClient或TCPListener(如果你可以尽可能远离NetworkStreams),使用纯套接字并不困难,并且总是给出更好的结果。

那么现在,一点一点地:

  1. 而不是"等待"响应,只是继续你的工作,当收到的东西,然后继续进程,它也会有更多的响应,因为你不会锁定你的应用程序(你可以用阻塞调用,但它涉及到创建一个新的线程每个套接字)。

  2. 在你的服务器代码中,你需要一种方法来识别每个套接字与客户端,通常如果你使用异步方法(ReadAsync, WriteAsync)在SocketAsyncEventArgs你有一个名为"UserToken"的属性,这是一个对象,所以你可以识别从哪一个来回调。

希望有所帮助