接受TCP和UDP连接?

时间:2012-04-11 21:28:51

标签: network-programming

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

但我该怎么做?

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

据我所知,设置的本质区别在于 -

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

但我如何同时做两件事?设置两个端口并交替监听连接?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:-1)

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

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

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