2

我正在创建一个接受 TCP 和 UDP 连接的聊天服务器。现在假设服务器只允许单个客户端连接;还没有人可以聊天。

但是我该怎么做呢?

 int sock = socket( PF_INET, SOCK_STREAM, 0 );

据我了解,设置的本质区别是——

 int sock = socket( PF_INET, SOCK_DGRAM, 0 );

但是我如何同时做这两个呢?设置两个端口并在两个端口上交替监听以进行连接?

4

2 回答 2

2

看看 select() 函数。它允许“观察”多个文件描述符。提示:UDP 没有连接,因此您没有“侦听器”套接字。对于 TCP,您打开一个侦听器套接字,在该套接字上可以接受连接。您可以使用 select() 来观看“监听”套接字。

于 2012-04-11T21:39:11.823 回答
-1

TCP和UDP是两个不同的东西。TCP 确保数据被发送,并保证交付。但是,UDP 不提供此功能。因为它们不同,接收数据的方式也不同,所以必须设置两个ServerSocket。一个处理 TCP 连接,另一个处理 UDP 连接。

我的建议是在发送重要信息时不要使用 UDP,因为它不可靠并且不能保证您希望发送的数据的交付。但是,如果绝对有必要同时使用 TCP 和 UDP 协议,那么我建议对服务器进行多线程处理,以便它侦听这两种类型的连接,并同时接受它们。

注意:您是否注意到网站可以以 http:// 和 https:// 开头?目的相同,但发送的数据类型不同,使用不同的端口号(http 为 80,https 为 443)。这只是关于为什么您需要服务器托管在两个不同端口上的快速解释。

于 2012-04-11T21:35:58.010 回答