加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

UNIX网络编程:UDP回射服务器程序(初级版本)及漏洞分析

发布时间:2016-09-10 12:50:35 所属栏目:Unix 来源:站长网
导读:该函数提供的是一个迭代服务器,而不是像TCP服务器那样可以提供一个并发服务器。其中没有对fork的调用,因此单个服务器进程就得处理所有客户。一般来说,大多数

我们的解决办法是修改recvfrom调用以返回数据报发送者的IP地址和端口号,保留来自数据报所发往服务器的应答,而忽略任何其他数据报。

void dg_cli(FILE *fp, int sockfd, const SA *pservaddr, socklen_t servlen)  
{  
    int             n;  
    char            sendline[MAXLINE], recvline[MAXLINE + 1];  
    socklen_t       len;  
    struct sockaddr_in  *preply_addr;  
      
    preply_addr = malloc(servlen);  
      
    while (fgets(sendline, MAXLINE, fp) != NULL) {  
      
        sendto(sockfd, sendline, strlen(sendline), 0, pservaddr, servlen);  
      
        len = servlen;  
        n = recvfrom(sockfd, recvline, MAXLINE, 0, (SA*)preply_addr, &len);  
        if (len != servlen || memcmp(pservaddr, (SA*)preply_addr, len) != 0) {  
            printf("reply from %s (ignored)n",inet_ntoa(preply_addr->sin_addr));  
            continue;  
        }  
      
        recvline[n] = 0;    /* null terminate */
        fputs(recvline, stdout);  
    }  
}

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读