zoukankan      html  css  js  c++  java
  • UDP编程中client和server中使用recvfrom和sendto的区别

    client中:
          sendto(sfd,buf,strlen(buf),0,(struct sockaddr *)&saddr,len);
          recvfrom(sfd,buf,sizeof(buf),0,NULL,NULL);
    server中:
          recvfrom(fd,buf,sizeof(buf),0,(struct sockaddr *)&caddr,&len);
    将网络字节序的IP地址转换成字符串输出
    // inet_ntoa : struct ip -> char *ip
      char *paddr = NULL;
      paddr = inet_ntoa(caddr.sin_addr);
      printf("client[%s] say:%s ",paddr,buf);

    sendto(fd,buf,strlen(buf),0,(struct sockaddr *)&caddr,len);

    struct sockaddr_in saddr;
    socklen_t len = sizeof(saddr);

    sendto最后两个参数是(struct sockaddr *)&saddr【 saddr 是自己 新建的sockaddr_in型的变量】,
    len【len 是socklen_t型的变量 其值为sizeof(saddr)】在client和server的编程中相似。
    recvfrom在client编程中,最后两个参数应设置为空。但在server编程时,recvfrom的最后两个参数是(struct sockeaddr *)&caddr和&len。通过inet_ntoa可以将网络字节序的地址转换为字符串型的,这样可增强应用性能,比如:打印。
    【注】 sendto函数中使用的是strlen,而recvfrom函数使用的是sizeof。

  • 相关阅读:
    search支持多种标签
    二级导航样式
    内容页与首页列表页调用点击数量
    常用标签
    20随机验证码
    19.请输入整数
    18.自定义过滤器表头排序
    17.js实现金山打字
    16.简单的自定义指令
    OC学习笔记 面向对象 继承与组合
  • 原文地址:https://www.cnblogs.com/Bro-Young/p/5762624.html
Copyright © 2011-2022 走看看