使用C#创建客户端/服务器聊天客户端

时间:2009-12-28 16:32:14

标签: c# .net winforms firewall

我想创建一个简单的客户端/服务器聊天应用程序。

这个想法是当一个客户端向服务器发送消息时,服务器会通知其他客户端进行更改。

在不必处理防火墙问题的情况下,最好的方法是什么?

可以通过http上的网络服务完成吗?

4 个答案:

答案 0 :(得分:1)

wsHttpBindingbasicHttpBinding的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服务来完成此任务:

COMET (programming)

如果您正在使用WCF构建服务,则可以使用双工绑定实现在端口80上运行的服务。

Duplex Services (MSDN)