我想开发一款带有简单IM功能的iPhone应用程序。我正在考虑在iPhone上设置HTTP服务器。如果iPhone使用wifi并且位于防火墙后面,我如何确保其他iPhone客户端可以连接到它?
答案 0 :(得分:1)
防火墙不会像NAT那样干扰连接。
当您通过无线路由器连接到互联网时,您正在通过NAT进行冲浪。这意味着你真的没有一个外部IP,但一旦你发起连接,路由器会将你的内部IP映射到他的一个外部端口,并且如果他将它连接到正确的端口,他会在一定时间窗口内将连接传递给你。
话虽如此,除非您可以在路由器和内部静态IP中配置端口转发,否则没有实际的方法在NAT后面设置服务器。
希望我很清楚,祝你好运
答案 1 :(得分:0)
我真的不认为您需要在iPhone上启动并运行HTPP服务器以创建可以发送和接收消息(IM)的应用程序。让一个iPhone用户直接连接到彼此的想法对我来说似乎不对,因为用户需要知道彼此的IP地址才能做到这一点。
聊天的不同用户之间的互联可以通过使您的应用程序通过专用TCP端口进行通信来解决。通常建议选择数量高于1024的端口,因为下面的端口通常位于所谓的well-known ports列表中,并用于Web(如端口80),FTP(端口21),SSH( 22),DNS(53)等,用户有责任确保应用程序使用的端口在防火墙上打开。为了解决这个问题,如果您发现所选端口被阻止,您实际上可以使用端口80进行通信。您可以这样做,因为您知道在大多数情况下不会阻止此端口。事实上,当防火墙阻止它用于通信的端口时,雅虎信使会使用这种技术。
应用程序应该使用该端口连接到实际存储用户凭据,执行身份验证,消息传输等的Web服务器,并且服务器应驻留在能够支持大量的硬件上的硬件上。同时连接。我建议使用VPS(如Linode提供的)或云(如Amazon EC2,Google Application Engine,Rackspace)。