2009-12-28 251 views
0

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

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

没有处理防火墙问题,最好的方法是什么?

可以使用网络服务完成http吗?

回答

1

WCF服务与wsHttpBindingbasicHttpBinding与防火墙很好玩。您将面临的主要问题是服务器通知客户端,可能需要修改某些防火墙设置。

0

您可以在服务器上运行HTTP服务器,并在每个客户端上保留一个连接。

0

你可以做到这一点使用COMET风格的Web服务:

COMET (programming)

如果您使用WCF建立你的服务,你会实现一个具有双面打印装订在80端口上运行的服务。

Duplex Services (MSDN)

1

的服务器需要一个端口上侦听。该端口需要通过防火墙进行访问。这两件事情是不可避免的。通常你会让你的服务器监听你组成的端口号(大于1024以避免冲突)。然后,您将让防火墙将该端口传递给您的服务器。

如果你期望普通人能够托管一台服务器,那么事情就会有点棘手。无论您是需要它们在其家庭路由器上启用端口转发,还是需要有一个中央服务器来进行配对。

这就是Skype或Halo的工作原理(Skype将中央服务器称为超级节点)。这是一个例子。

C是Skype的中央服务器。 A是Alice和B是bob。爱丽丝想打电话给鲍勃。

Ç监听某个端口上和C的防火墙允许通过
A登录到Skype的连接到C
B登录到Skype的,connecticg到C
A发送消息到C说,他们希望B键
C发送一条消息给B(因为B已经连接好了)这样说。

呼叫连接后,A和B将所有消息发送给C,C将它们转发到目的地。