2010-02-28 70 views
0

我想编写一个浏览器聊天并使用C++编写自己的服务器,因为您无法在php和其他语言中的不同实例(聊天用户)之间发送文本。 我有Apache运行端口80,这就是为什么我不能运行“聊天http服务器”在端口80.一些浏览器阻止连接到一个http站点,如果它不使用端口80. 有人知道,我应该使用什么端口为这个小型服务器提供最佳浏览器兼容性也许8080?我也可以购买一个不同的IP来运行它:80,但我的主机想要一个新的IP每月5€...替代http端口?

谢谢。

+3

嗯。我不知道任何阻塞端口的浏览器。也许是防火墙,但为什么浏览器会关心? – 2010-02-28 19:04:55

+1

例如Firefox会阻止连接到SSH-Port(22)等端口。而且我知道,一些移动提供商(笔记本电脑上的无线互联网)会阻塞很多端口,因为他们不希望人们使用在线流和其他高流量的应用程序。 – 2010-02-28 19:14:35

回答

1

您可以使用mod_proxy(或mod_proxy_balancer)将Apache站点的某个分支上的请求转发到侦听其他某个端口上的本地主机的其他Web服务器。

+0

好主意,谢谢。你认为它会降低连接速度吗? http聊天服务器只提供文本,其他所有内容(图形,...)。所以这不应该是一个问题,对吧? – 2010-02-28 19:19:13

0

使用主机名来划分您的应用程序--i.e。,www.foo.bar:80chat.foo.bar:80

+0

据我所知,你只能在IP上打开一个套接字,而不是主机名? – 2010-02-28 19:15:53

+0

uhm是的,但是您的网络服务器能够根据主机名来路由流量 - 也就是说,网络服务器可以在一个物理服务器ip_address对上为一千个不同的域名服务。 – 2010-02-28 19:18:10

+0

是的,但我的服务器有一个自己的侦听套接字,所以这是行不通的。 mod_proxy(Tronic)将解决这个问题。 – 2010-02-28 19:26:36

0

除端口80外,端口443(通常为https)最常用于通过各种防火墙进行出站连接。

+0

我已经使用https和我认为有一些浏览器,只允许连接到443,如果它真的与SSL SSL证书 – 2010-02-28 19:17:01

0

你可以写你的网站在Apache mod_chat或其他东西。通过这种方式,您可以将所有基本的HTTP资料保存到Apache中,并且可以专注于您的应用程序将C++的全部功能。

+0

我没有进入apache模块。据我了解Apache的模块化结构,它会为每个聊天用户打开一个自己的线程。所以我无法将聊天消息发送给同一个房间中的每个用户。这就是为什么我想将它作为自己的网络服务器编码。我认为把这些文本写入数据库(比如mysql)并不是一个好主意,并且每秒要多次请求一个新文本。那会导致糟糕的表现。 – 2010-02-28 19:44:11

+0

@Dr。您可以创建一个共享内存区域,在该区域中所有线程或进程(取决于您的apache设置)可以交换数据。如果您创建自己的服务器,则必须解决相同的问题,除非使用单进程异步体系结构。 – Gianni 2010-02-28 22:37:15