通过互联网进行交流

时间:2011-08-10 03:09:39

标签: tcp communication

如果以前曾问过这个问题,我很抱歉,但这个想法很难制定。我可以理解两台计算机如何通过监听开放端口并直接向IP地址发送信息来直接进行交互。但是,我想知道像LogMeIn或聊天应用程序这样的应用程序是如何通信的(通过端口80我猜是因为它总是打开,但你不能听它),甚至是游戏(如果它们没有打开一个港口)。如果我猜测,我认为他们使用第三方Web服务器和数据库,通过“GET”和“POST”请求调解计算机之间的信息传输。这可能会使通信异步。

如果我能得到一个答案,我不在乎这个问题的评分是否差,即使它只是一个链接到其他有答案的地方。另外,我主要使用C ++,熟悉TCP和HTTP协议。

3 个答案:

答案 0 :(得分:3)

是的,通常有一个多个客户端连接的“服务器”。服务器接受来自一个客户端的消息,并将其转发给一个或多个其他客户端。这几乎总是“异步”但这可能意味着一些事情(无论是在客户端或服务器上以这种方式完成,服务器是“事件驱动”还是多线程等)。服务器可以是Web服务器,但存在其他类型(例如Jabber服务器,它们通常[或经常]在端口5222上使用XMPP。)

一些信使通过HTTP工作(通常是端口80,通常是打开的),即使协议通常使用不同的端口,也可以编写“网关”以通过端口80和HTTP进行通信,以避免其他端口被阻塞的问题,它可以转发到“标准服务器”或完全重新实现它。特别是在企业环境中,互联网访问可以由HTTP代理服务器调解,因此使用网关或本机HTTP消息传递应用程序/协议是唯一的选择。

我认为为这些讨论正确定义'服务器'很重要。该术语通常用于描述实际的计算机,坐在数据中心或其他东西。但是,当我们谈论“网络服务器”或“jabber服务器”时,我们通常指的是一个软件守护程序,它是一个软件,它的工作就是监听客户端连接并对收到的消息采取行动

答案 1 :(得分:0)

你是对的,拥有一台在客户端之间传递信息的服务器是很常见的。 IRC以这种方式运作,并且大多数是在线游戏。有些应用程序确实使用HTTP来避免防火墙问题。

Internet上的所有通信本质上都是异步的:在您调用函数写入套接字后,程序会在数据包传输到目的地时继续运行。

答案 2 :(得分:0)

另一种替代方案是对等网络,其中中央服务器将协商两个客户端之间的直接连接,主要用作客户端状态及其相关直接链接的仲裁,而不是作为代理或中间-man在客户端之间转发消息。因此,客户端将向中央服务器发送请求以请求与另一个客户端的连接,并且服务器将从寻找其他对等端的客户端池中找到另外的客户端,并将每个单独的机器的信息发回对于相对的客户,此时客户端本身将彼此直接连接。一旦建立了两个客户端之间的对等连接,服务器就可以在客户端及其相关连接上保持“状态”(即,从某个单独的客户端机器中拉出X个机器)。 p>