博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用SIGALARM为recvfrom设置超时
阅读量:4364 次
发布时间:2019-06-07

本文共 846 字,大约阅读时间需要 2 分钟。

static void    sig_alrm(int);void dg_cli(FILE *fp, int sockfd, const SA *pservaddr, socklen_t servlen){    int    n;    char   sendline[MAXLINE], recvline[MAXLINE + 1];    signal(SIGALRM, sig_alrm);    while (fgets(sendline, MAXLINE, fp) != NULL) {        sendto(sockfd, sendline, strlen(sendline), 0, pservaddr, servlen);        alarm(5);        if ( (n = recvfrom(sockfd, recvline, MAXLINE, 0, NULL, NULL)) < 0) {            if (errno == EINTR)                fprintf(stderr, "socket timeout\n");            else                err_sys("recvfrom error");        } else {            alarm(0);            recvline[n] = 0; /* null terminate */            fputs(recvline, stdout);        }    }}static void sig_alrm(int signo){    return;                  /* just interrupt the recvfrom() */}

 

转载于:https://www.cnblogs.com/soldierback/p/10763366.html

你可能感兴趣的文章
LeetCode题解之Univalued Binary Tree
查看>>
线程池学习研究-(自实现)2
查看>>
ubuntu下安装新字体
查看>>
Django连接MySQL数据库
查看>>
漫游Kafka入门篇之简单介绍(1)
查看>>
redis学习之旅-初识Redis
查看>>
WinForm 小程序 NotePad
查看>>
JSTL 核心标签库 使用
查看>>
Redis总结(四)Redis 的持久化(转载)
查看>>
About_Return
查看>>
10.24给TA的话
查看>>
数组_leetcode209
查看>>
日系插画学习笔记(三):光影与结构
查看>>
C语言——几道习题
查看>>
CentOS——自己安装网卡驱动
查看>>
Django QuestSet API (官方文档)
查看>>
2018 Multi-University Training Contest 10
查看>>
APACHE2 服务器配置 (一)
查看>>
JAVA JVM 流程一
查看>>
Jquery的普通事件和on的委托事件
查看>>