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。

  • 相关阅读:
    mysql_config 问题
    软考倒计时3天
    软考倒计时5天
    Pdf 解密后复制文字乱码
    软考倒计时7天:题目书中的易混点
    应急储备和管理储备
    软考倒计时9天:100个主要知识点
    软考倒计时10天
    软考倒计时15天
    软考倒计时18天
  • 原文地址:https://www.cnblogs.com/Bro-Young/p/5762624.html
Copyright © 2011-2022 走看看