我正在创建一个接受TCP和UDP连接的聊天服务器。现在假设服务器只允许单个客户端连接;还没有人可以聊天。
但我该怎么做?
int sock = socket( PF_INET, SOCK_STREAM, 0 );
据我所知,设置的本质区别在于 -
int sock = socket( PF_INET, SOCK_DGRAM, 0 );
但我如何同时做两件事?设置两个端口并交替监听连接?
答案 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)。这只是一个快速解释,为什么你需要服务器在两个不同的端口上托管。