Network programming 是否同时接受TCP和UDP连接?

Network programming 是否同时接受TCP和UDP连接?,network-programming,Network Programming,我正在创建一个同时接受TCP和UDP连接的聊天服务器。现在假设服务器只允许单个客户端连接;还没有人可以聊天 但是我该怎么做呢 int sock = socket( PF_INET, SOCK_STREAM, 0 ); 据我所知,设置的本质区别在于-- 但是我如何同时做到这两个呢?为连接设置两个端口并在这两个端口上交替侦听?TCP和UDP是两件不同的事情。TCP确保数据被发送,并保证传输。但是,UDP不提供此功能。因为它们不同并且接收数据的方式不同,所以必须设置两个ServerSocket。一

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

但是我该怎么做呢

 int sock = socket( PF_INET, SOCK_STREAM, 0 );
据我所知,设置的本质区别在于--


但是我如何同时做到这两个呢?为连接设置两个端口并在这两个端口上交替侦听?

TCP和UDP是两件不同的事情。TCP确保数据被发送,并保证传输。但是,UDP不提供此功能。因为它们不同并且接收数据的方式不同,所以必须设置两个ServerSocket。一个用于处理TCP连接,另一个用于处理UDP连接

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


注意:您是否注意到网站可以以http://和https://开头?目的地相同,但发送的数据类型不同,并且使用了不同的端口号(80表示http,443表示https)。这只是一个简单的解释,说明了为什么需要将服务器托管在两个不同的端口上。

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

-1用于建议根本不要使用UDP,以及用于多线程建议(为什么不使用类似select的东西?)——也许您应该删除第二段:-在某种程度上,他是对的——我们需要多线程处理这个问题。我只是还不担心。但是我们还需要使用UDP。没有选择。UDP用于不太重要的信息。我的回答与主题相关。在我看来,聊天服务器不一定要使用UDP连接。
 int sock = socket( PF_INET, SOCK_DGRAM, 0 );