gpt4 book ai didi

c++ - 使用 select 的 tcp 和 udp echoclient 服务器

转载 作者:行者123 更新时间:2023-11-28 07:44:13 25 4
gpt4 key购买 nike

这是使用 select 的 tcp 和 udp echoclient 服务器的代码片段。我已经完成了 poll 和got a good clarity but when coming to select it had described in the book i.e in the below code snippet we should take (maxpl+2) i did not got it and first of all why we are taking max (tcp_sfd,udp_sfd)?

 fd_set fdvar; 
FD_ZERO(&fdvar);
FD_SET(tcp_sfd,&fdvar);
FD_SET(udp_sfd,&fdvar);
int maxpl = max(tcp_sfd,udp_sfd);
cout << "Waiting for a client...\n";

if(select(maxpl+2 ,&fdvar,NULL,NULL,NULL)==-1)
{
perror("error in select");
}
if(FD_ISSET(udp_sfd,&fdvar))
{
// UDP
}
else
{
//TCP
}

最佳答案

关于这里显示的代码,maxpl+2是错误的,应该是maxpl+1,虽然使用maxpl+2是无害的.

select 需要它的 1. 参数比您在任一 fd_set 中的最大文件描述符的值大 1。 - 因为这就是 select 的文档所说的必须如此。

关于c++ - 使用 select 的 tcp 和 udp echoclient 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15185222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com