sockets - 解决套接字问题并选择

标签 sockets select

我正在用C实现套接字编程项目。

选择()

等待来自客户端的数据。我有两个UDP套接字,而select调用始终忽略我的一个套接字。有人可以简要描述我应该从哪里开始寻找它吗?这就是我的服务器正在做的

waitThreshold.tv_sec = 5000; 
waitThreshold.tv_usec = 50; 
if(sd > sd1)    
    max_sd = (sd + 1);
else if(sd1 > sd)   
    max_sd = (sd1 + 1);
FD_ZERO(&read_sds); 
FD_SET(sd, &read_sds); 
FD_SET(sd1, &read_sds);


ret = select(max_sd, &read_sds, NULL, NULL, &waitThreshold); 
if(ret <0)
{
    printf("\nSelect thrown an exception\n");   
    return 0;
} 
else if(FD_ISSET(sd, &read_sds)) 
{
    // code for socket one
} 
else if(FD_ISSET(sd1, &read_sds)) 
{
    // code for socket two
}

最佳答案

您编写了else if,因此其中只有一个可以运行。

关于sockets - 解决套接字问题并选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15592346/

相关文章:

java - 不应该将 SoLinger 设置为错误地切断此连接吗?

java - Java中线程完成时关闭资源

MySQL分组和排序

mysql - MySQL 中 SELECT 内的 IF 语句 SQL 查询

mysql - 将重叠的日期拆分为不同的记录

选择框的 Angular 2 ngModel 更改未更新所选选项

ios - dispatch_io_read 如果接收数据大小小于长度,套接字将等待更多数据

linux - 简单的原始数据包捕获和发送程序

带套接字的 Java IPC - 使用环回设备

mysql复杂连接三个表的总计