UDP通讯协议双向通讯的实现

      最后更新:2022-04-18 22:54:28 手机定位技术交流文章

      UDP通讯端代码1

      #include "myhead.h"

      int udpsock;

      //线程的任务函数
      void *mysendmsg(void *arg)
      {
      char rbuf[100];
      struct sockaddr_in addr;
      bzero(&addr,sizeof(addr));
      addr.sin_family=AF_INET;
      我不知道你在说什么,阿尔德,我不知道你在说什么,sin_addr.s_addr=inet_addr (”);// 彼此的ip
      我不知道你指的是什么, Ardr.sin_port=htons(200);//其他港口号。
      while(1)
      {
      bzero(rbuf,100);
      你在这里做什么? "你在这里做什么?" ""你""在这里""你"在这里做什么?""你""你"在这里""你"在这里""你"做什么" "你""
      scanf("%s",rbuf);
      sendto(udpsock,rbuf,strlen(rbuf),0,(struct sockaddr *)&addr,sizeof(addr));
      }
      }
      int main(int argc,char **argv)
      {
      int ret;
      char sbuf[100];
      pthread_t id;
      指定 IPv4 处理需要 IP 和 端口号约束的正文变量。
      struct sockaddr_in bindaddr;
      bzero(&bindaddr,sizeof(bindaddr));
      bindaddr.sin_family=AF_INET;
      我不知道你在说什么,sin_addr.s_addr=htonl(INADR_ANY);//Auto 匹配发件人的ip
      我不确定 Binnddr. sin_port=htons (300);// 发送端口号

      / 保存 IPv4 地址的 IP 地址和 IP 端口号 。
      struct sockaddr_in otheraddr;
      bzero(&otheraddr,sizeof(otheraddr));
      int addrsize=sizeof(otheraddr);

      做一个乌龟套接字
      udpsock=socket(AF_INET,SOCK_DGRAM,0);
      if(udpsock==-1)
      {
      校对:Portnoy
      return -1;
      }

      消除港口约束性限制
      int on=1;
      setsockopt(udpsock,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on));

      //绑定
      ret=bind(udpsock,(struct sockaddr *)&bindaddr,sizeof(bindaddr));
      if(ret==-1)
      {
      ""
      return -1;
      }

      / 创建一条发送信件的线索。
      pthread_create(&id,NULL,mysendmsg,NULL);

      //接收信息
      while(1)
      {
      bzero(sbuf,100);
      recvfrom(udpsock,sbuf,100,0,(struct sockaddr *)&otheraddr,&addrsize);
      prentf (“ip 地址:%s 端口号 :%hu 发送了消息 :%sn”, inet_ontoa (otheraddr.) 我不确定您指的是什么, sin_addr), nthohs (otheraddr.sbuf, (sin_port);
      }

      //关闭
      close(udpsock);
      return 0;
      }

      UDP通讯端代码2

      #include "myhead.h"

      int udpsock;
      //线程的任务函数
      void *myrecvmsg(void *arg)
      {
      char rbuf[100];

      while(1)
      {
      bzero(rbuf,100);
      recvfrom(udpsock,rbuf,100,0,NULL,NULL);
      “我收到了以下信息:%sn,rbuf”;
      }
      }
      int main(int argc,char **argv)
      {
      int ret;
      char sbuf[100];
      pthread_t id;
      指定 IPv4 处理需要 IP 和 端口号约束的正文变量。
      struct sockaddr_in bindaddr;
      bzero(&bindaddr,sizeof(bindaddr));
      bindaddr.sin_family=AF_INET;
      我不知道你在说什么,sin_addr.s_addr=htonl(INADR_ANY);//Auto 匹配发件人的ip
      我不确定 Binnddr. sin_port=htons (200) // 传送端口号 。

      / 保存 IPv4 地址的 IP 地址和 IP 端口号 。
      struct sockaddr_in otheraddr;
      bzero(&otheraddr,sizeof(otheraddr));
      otheraddr.sin_family=AF_INET;
      我不知道你在说什么,其他的。 我不知道你在说什么,sin_addr.s_addr=inet_addr(”);
      我不知道你的意思,其他addr.sin_port=htons(300);//目标主机端口号

      做一个乌龟套接字
      udpsock=socket(AF_INET,SOCK_DGRAM,0);
      if(udpsock==-1)
      {
      校对:Portnoy
      return -1;
      }

      消除港口约束性限制
      int on=1;
      setsockopt(udpsock,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on));

      //绑定
      ret=bind(udpsock,(struct sockaddr *)&bindaddr,sizeof(bindaddr));
      if(ret==-1)
      {
      ""
      return -1;
      }

      / 创建接收信息的线索。
      pthread_create(&id,NULL,myrecvmsg,NULL);

      / 向不同的主机发送信息
      while(1)
      {
      bzero(sbuf,100);
      你在这里做什么? "你在这里做什么?" ""你""在这里""你"在这里做什么?""你""你"在这里""你"在这里""你"做什么" "你""
      scanf("%s",sbuf);
      sendto(udpsock,sbuf,strlen(sbuf),0,(struct sockaddr *)&otheraddr,sizeof(otheraddr));
      }

      //关闭
      close(udpsock);
      return 0;
      }

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/22529.html

          热门文章

          文章分类