聊天服务器和客户端实现?

时间:2014-01-18 23:09:42

标签: c sockets networking winsock lan

我已经正在死去在C和Winsock中实现聊天服务器很长一段时间了,但我没有花时间。部分原因是因为我仍然不确定有关在Windows操作系统上构建服务器的一些概念性想法,例如聊天。

以下是我一直在考虑的一些问题:

  • 用户x如何通过通用LAN连接到我的服务器 没有我依赖他们输入网络地址(例如地址 可能无效,重定向到其他服务器等。)

  • 如果我使用广播来解决上述问题,那么聊天会足够可靠吗?

  • 这可能是DD局域网,因为数据包会在每台机器上被强制处理,如果有足够的人加入,可能会占用大量带宽吗?

  • 多播和广播有什么区别?多播真正优越吗?

根据请求,我对可靠性的定义是我可以在发送的数据包中始终获得大多数数据。换句话说,我不介意丢弃一些数据包,但我很清楚数据是否在此过程中被搞砸了很多。

目前,我有很多问题而不是答案,但我得到的主要观点是:

在C和Winsock中通过LAN实现聊天的最安全,最可靠的方法是什么?

1 个答案:

答案 0 :(得分:3)

How will user x connect to my server over a generic LAN without me relying 
on them to type in a network address( e.g. address could be
invalid, redirected to a different server, etc. )

使用已知服务器的已关闭列表,或使用某些基于广播的自动发现系统。

If I use broadcasting to solve the above problem, will that be reliable 
enough for chat?

定义您对可靠性的要求。

  

这可能会导致DDO成为局域网,因为数据包将被强制执行      在每台机器上处理,如果足够的话可能会占用大量带宽      人们加入?

这是一个聊天......生成的数据包量相对较短而且很小。

  

多播和广播有什么区别?是      多播真正优越吗?

搜索网络。有很多关于多播的资源和信息,最准确的是IP多播。简而言之:

  • 广播传送到广播域中的所有主机。多播传递给所有明确加入多播组的主机,这些多播组可能不在同一个广播域中(参见最后一点)。

  • 广播强制交换机将广播数据包转发到其所有接口。智能交换机可以从查看IGMP数据包中获益,以了解哪些接口必须转发到组播数据包。

  • 广播无法通过广播域进行树形切换。如果路由器被配置为路由多播(搜索M-bone

  • ,则多播数据包可以遍历路由器