如何在C#中使用套接字异步回复客户端?

如何在C#中使用套接字异步回复客户端?

问题描述:

我基本实现了this asynchronous server socket example(和相应的客户端)。使用它,我可以回应客户端,如果我完全按照该示例,即如果Send()响应的调用是在ReadCallback()方法。如何在C#中使用套接字异步回复客户端?

但是,如果我尝试和送外这里的响应,即在我已经连接到我的消息处理程序回调(在不同的线程中运行),我得到this错误,说Socket是未连接。如果我尝试在Server代码的其他地方发送响应,例如在侦听传入连接的while(true)循环中,我会得到相同的错误。

我在这里错过了什么?

编辑:

好了,我读Two-way communication in socket programming using C,我现在认为,根据这个问题的答案,我要修改我联系的例子,让我回复服务器上套接字由accept进程返回。 我的目标是在客户端和服务器连接后,能够在接收回调之外拨打Send(),例如Main()

请有人可以建议我如何修改示例以实现我想要的?我对此深感困惑,如果我不需要创建一个单独的流(根据我发布的问题,我不需要......)。

+0

在修改之前/之后发布相关的代码片段可以帮助我们更好地理解。谈话很好,但通常不会精确地描述代码。 – Jon

如果你想保持连接打开,那么将需要坚持handler变量,因为这是开放套接字连接。然后,只要你想发送该连接的消息,你检索它的套接字并发送。

此外,您显然不会调用handler变量上的Shutdown()和Close()。

+0

先生,你是绝对的英雄。这是我几周来最轻松的mod。这绝对是一个“无法看到树林”的案例! (仅供参考,这是我失踪的持久性)。 –