socket C# 基础问题

来源:百度知道 编辑:UC知道 时间:2024/09/28 13:28:11
我在做一个类似于网吧管理的系统 只不过我的客户机不是在一个局域网内 而是有公网IP的一台台独立的PC 现在我想利用socket 实现:当服务器发送一个通知时 安装了此客户端的所用PC都可以接收到这条通知 给个思路。 (实际就是我想了解服务器使怎样知道他的通知要发给哪些PC 他是如何知道哪些PC是客户机的呢? 不会是像广播那样在整个互联网上发吧?客户端侦测接受吧)

对于你的问题我想说两点:
第一,阁下犯了个明显的错误,"不会是像广播那样在整个互联网上发吧?"请问广播能通过路由器吗?这是明显不可能的事.
第二,就是对你问题的解决办法.有两种方法:第一就是利用UDP组播实现服务器响所有客户端"广播"信息.(注意:这个广播可不是真正意义上的广播,它是用组播来实现广播的功能,因为组播是可以通过路由器的).但是有个问题是就是UDP的可靠性不高.
第二就是用TCP,当服务器需要广播信息时就对没一个连接的客户端发单播,这样就实现广播的功能了,TCP的优点是可靠性高.
看你自己的选择吧.希望我能帮上你的忙.

在服务器上写一个监听程序。客户端连接到该监听程序时,将这个Socket连接对象保存下来(必须是常连接方式),并设置一个ID对应。
客户端连接成功后,向服务器发送消息,消息内容包括接收方的ID以及所发送的信息内容。
监听程序收到信息后,通过其接收方的ID号,将信息内容转发到指定Socket连接对象中去,即可实现。