【问题标题】:Connecting non-IOCP client with IOCP Server将非 IOCP 客户端与 IOCP 服务器连接
【发布时间】:2013-09-27 10:54:17
【问题描述】:

我正在设计一个客户端-服务器应用程序。 我的服务器将使用 C++ 并使用 IOCP 进行 TCP/IP 通信。

尚未决定用于客户开发的技术。所以我对 IOCP 与将来开发的客户端的兼容性有几个问题(我需要冻结服务器的设计):

  1. 我可以使用java的通用套接字编程(客户端更可能在java中开发)与基于IOCP的服务器通信吗?

  2. IOCP 如何响应客户端连接的突然和正常终止(我将在服务器上收到什么通知)?

谢谢

尼朋

【问题讨论】:

    标签: c++ sockets iocp


    【解决方案1】:

    你这里说的是socket编程,中间层是TCP/IP,所以网络编程库(比如IOCP)是无关紧要的。您可以在客户端使用任何语言或库。

    【讨论】:

    • 没错,但这并不意味着它很容易做到。这就像说 CORBA 只是 TCP。根据 IOCP 库的先进程度,可能很难对其进行逆向工程。
    • @Prof.Falken 那是……不是 Hei 说的。 IOCP 服务器仍然使用 TCP/IP 协议与客户端通信,它使用 IOCP 技术这一事实与客户端无关,是一个实现细节。客户端可以通过数字信鸽连接到它,只要它遵循 TCP 协议。我看不出 IOCP 库的逆向工程与这个问题有什么关系。
    • @Thomas,好的,那么我完全误解了这个问题和这个答案。仍然不确定......也许这是相关的stackoverflow.com/questions/10978765/…
    • @Prof.Falken - IOCP 只是在 Windows 上以异步和高效方式使用套接字 API 的一种方式。只要服务器使用 TCP/IP,客户端就可以使用任何支持 TCP/IP 的语言或技术。这不像说“CORBA 就是 TCP”,CORBA 是一种对象模型和有线协议,可以使用 TCP/IP 作为较低级别的通信通道;就像 DCOM 可以使用 TCP/IP 作为较低级别的通信通道一样。与使用 IOCP 绝对没有可比性。
    【解决方案2】:

    对于第一个问题,是的,只要您使用 TCP/IP 协议,您就可以使用任何语言。

    对于第二个问题,我的解决方案是,为iocp创建一个停止事件,每隔一段时间,发送一个小包给客户端,如果客户端没有回复这个包,设置停止事件,并释放连接客户

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-15
      • 1970-01-01
      相关资源
      最近更新 更多