我想创建一个简单的客户端/服务器聊天应用程序。
这个想法是当一个客户端向服务器发送消息时,服务器会通知其他客户端进行更改。
在不必处理防火墙问题的情况下,最好的方法是什么?
可以通过http
上的网络服务完成吗?
答案 0 :(得分:1)
wsHttpBinding
或basicHttpBinding
的WCF服务可以很好地防火墙。您将面临的主要问题是服务器通知客户端,可能需要修改某些防火墙设置。
答案 1 :(得分:1)
服务器需要侦听端口。该端口需要通过防火墙进行访问。这两件事是不可避免的。通常,您将让您的服务器侦听您组成的端口号(大于1024以避免冲突)。然后,您将让防火墙将该端口传递到您的服务器。
如果你期望普通人接待服务器,那么事情会有点棘手。您需要它们在其家用路由器上启用端口转发,或者您需要有一个用于匹配的集中式服务器。
Skype或Halo的工作方式(Skype称中央服务器为超级节点)。这是一个例子。
C是中央Skype服务器。 A是Alice,B是bob。爱丽丝想打电话给鲍勃。
C侦听某个端口,C的防火墙允许通过
登录Skype,连接到C
B登录Skype,连接到C
A向C发送消息说他们想要呼叫B
C向B发送消息(因为B已经连接,这没关系)这样说。
一旦呼叫连接,A和B将所有消息发送到C和C,将它们转发到目的地。
答案 2 :(得分:0)
您可以在服务器上运行HTTP服务器,并在每个客户端上保持对它的连接。
答案 3 :(得分:0)
您可以使用COMET样式的Web服务来完成此任务:
如果您正在使用WCF构建服务,则可以使用双工绑定实现在端口80上运行的服务。