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

时间:2013-12-12 12:15:21

标签: c# serversocket asyncsocket

我基本上已经实现了this asynchronous server socket example(以及相应的客户端)。使用它,我可以回复客户端,如果我完全按照示例,即,Send()响应的调用是ReadCallback()方法。

但是,如果我尝试在此处之外发送响应,即在我附加到我的消息处理例程(在不同的线程中运行)的回调中,我得到this错误,说套接字未连接。如果我尝试在Server代码中的其他位置发送响应,请说在正在侦听传入连接的while(true)循环中,我会收到相同的错误。

我错过了一些基本的东西吗?

修改

好的,所以我读了Two-way communication in socket programming using C,我现在,根据那个答案,我必须修改我链接的示例,以便我回复服务器上的accept进程返回的套接字。 我的目标是能够在客户端和服务器连接后从Send()拨打接收回拨之外的Main()

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

1 个答案:

答案 0 :(得分:1)

如果要保持连接打开,则需要保留handler变量,因为这是打开的套接字连接。然后,无论何时您想要发送该连接,都要检索其套接字并发送。

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