【问题标题】:How do I reply asynchronously to a client using sockets in C#?如何在 C# 中使用套接字异步回复客户端?
【发布时间】:2013-12-12 23:46:33
【问题描述】:

我已经基本实现了this asynchronous server socket example(以及对应的客户端)。使用它,如果我完全按照示例进行操作,我可以响应客户端,即,如果对 Send() 的调用响应在 ReadCallback() 方法中。

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

我在这里遗漏了一些基本的东西吗?

编辑:

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

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

【问题讨论】:

  • 在您修改之前/之后发布相关代码 sn-p 将有助于我们更好地理解。说话很好,但通常不会准确描述代码。

标签: c# serversocket asyncsocket


【解决方案1】:

如果要保持连接打开,则需要保留 handler 变量,因为那是打开的套接字连接。然后,每当您要发送该连接时,您都会检索其套接字并发送一条消息。

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

【讨论】:

  • 先生,您是绝对的英雄。这是我在几周内制作的最简单的模组。这绝对是“只见树木不见森林”的案例! (仅供参考,这是我缺少的坚持)。
猜你喜欢
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多