c语言udp通信实例(linux)

2023-10-29

c语言udp通信实例(linux)  2012-02-07 09:14:28

分类: C/C++

  1. server

  2. ---------------


  3. #include <stdio.h> /* These are the usual header files */
  4. #include <string.h>
  5. #include <unistd.h> /* for close() */
  6. #include <sys/types.h>
  7. #include <sys/socket.h>
  8. #include <stdlib.h>
  9. #include <netinet/in.h>
  10. #include <arpa/inet.h>

  11. #define PORT 1234 /* Port that will be opened */
  12. #define MAXDATASIZE 100 /* Max number of bytes of data */

  13. main()
  14. {
  15. int sockfd; /* socket descriptors */
  16. struct sockaddr_in server; /* server's address information */
  17. struct sockaddr_in client; /* client's address information */
  18. socklen_t sin_size;
  19. int num;
  20. char recvmsg[MAXDATASIZE]; /* buffer for message */
  21. char sendmsg[MAXDATASIZE];
  22. char condition[] = "quit";
  23. /* Creating UDP socket */
  24. if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
  25. /* handle exception */
  26. perror("Creating socket failed.");
  27. exit(1);
  28. }

  29. bzero(&server,sizeof(server));
  30. server.sin_family=AF_INET;
  31. server.sin_port=htons(PORT);
  32. server.sin_addr.s_addr = htonl (INADDR_ANY);
  33. if (bind(sockfd, (struct sockaddr *)&server, sizeof(struct sockaddr)) == -1) {
  34. /* handle exception */
  35. perror("Bind error.");
  36. exit(1);
  37. } 

  38. sin_size=sizeof(struct sockaddr_in);
  39. while (1) {
  40. num = recvfrom(sockfd,recvmsg,MAXDATASIZE,0,(struct sockaddr *)&client,&sin_size); 

  41. if (num < 0){
  42. perror("recvfrom error\n");
  43. exit(1);
  44. }

  45. recvmsg[num] = '\0';
  46. printf("You got a message (%s) from %s\n",recvmsg,inet_ntoa(client.sin_addr) ); /* prints client's IP */
  47.         if(strcmp(recvmsg,condition)==0) break;
  48.    int i=0;
  49. for(= 0 ; i < num ; i ++)
  50. {
  51.    sendmsg[i] = recvmsg[num-1-i];
  52. }
  53. sendmsg[num]='\0';
  54. sendto(sockfd,sendmsg,strlen(sendmsg),0,(struct sockaddr *)&client,sin_size);

  55. }

  56. close(sockfd); /* close listenfd */ 
  57. }


  58. ---------------------------------------------------------

  59. client


  60. #include <stdio.h>
  61. #include <stdlib.h>
  62. #include <unistd.h>
  63.         #include <strings.h>
  64. #include <string.h>
  65. #include <sys/types.h>
  66. #include <sys/socket.h>
  67. #include <netinet/in.h>
  68. #include <netdb.h> /* netbd.is needed for struct hostent =) */

  69. #define PORT 1234 /* Open Port on Remote Host */
  70. #define MAXDATASIZE 100 /* Max number of bytes of data */

  71. int main(int argc, char *argv[])
  72. {
  73. int fd, numbytes; /* files descriptors */
  74. char recvbuf[MAXDATASIZE]; /* buf will store received text */
  75.         char sendbuf[MAXDATASIZE];
  76. struct hostent *he; /* structure that will get information about remote host */
  77. struct sockaddr_in server,client; /* server's address information */

  78. if (argc !=2) { /* this is used because our program will need two argument (IP address and a message */
  79. printf("Usage: %s <IP Address> \n",argv[0]);
  80. exit(1);
  81. }

  82. if ((he=gethostbyname(argv[1]))==NULL){ /* calls gethostbyname() */
  83. printf("gethostbyname() error\n");
  84. exit(1);
  85. }

  86. if ((fd=socket(AF_INET, SOCK_DGRAM, 0))==-1){ /* calls socket() */
  87. printf("socket() error\n");
  88. exit(1);
  89. }

  90. bzero(&server,sizeof(server));
  91. server.sin_family = AF_INET;
  92. server.sin_port = htons(PORT); /* htons() is needed again */
  93. server.sin_addr = *((struct in_addr *)he->h_addr); /*he->h_addr passes "*he"'s info to "h_addr" */

  94.         socklen_t len;
  95.          len=sizeof(struct sockaddr_in);
  96. while (1) {
  97.    printf("input message:");
  98.          fgets(sendbuf,40,stdin);
  99. sendto(fd,sendbuf,strlen(sendbuf),0,(struct sockaddr *)&server,len);
  100. if ((numbytes=recvfrom(fd,recvbuf,MAXDATASIZE,0,(struct sockaddr *)&server,&len)) == -1){ /* calls recvfrom() */
  101. printf("recvfrom() error\n");
  102. exit(1);
  103. }
  104. recvbuf[numbytes]='\0';
  105. printf("Server Return Reverse Message: %s\n",recvbuf); /* it prints server's welcome message */

  106. }

  107. close(fd); /* close fd */
  108. }


  109. --------------------------------------------------------------------------------

  110. ./client 127.0.0.1

  111. input:test
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c语言udp通信实例(linux) 的相关文章

  • Microsoft.Web.Administration 内存泄漏

    拥有一个 Windows 服务 除其他外 还可以监视 IIS 应用程序池 如果任何池已配置应用程序但未运行 则该池 池 将启动 这已经运行良好一段时间了 最近发现该服务存在内存泄漏 查看内存转储 罪魁祸首是用于检查应用程序池的 Micros
  • 是一对一的关系不好的策略

    用户始终拥有一个钱包 一个钱包始终属于一位用户 由于我想分离与钱夹相关的属性 我创建了 Wallet 对象并能够跟踪钱交易 我创建了 public Wallet Entity
  • 如何在类文件中使用BackGroundWorker?

    我的program cs调用mdi父frmMain frmMain 然后根据用户操作打开不同的子表单 所有的处理逻辑都写在BusinessLogic cs中 frmMain 在加载时调用 BusinessLogic cs 的方法来初始填充数
  • Roslyn 将内容嵌入到程序集中

    是否可以嵌入content使用 roslyn 进入程序集 嵌入资源效果很好 但不知道如何添加内容 我添加这样的资源 foreach string file in Directory GetFiles inputPath Where item
  • 如何针对 32 位和 64 位安全地从 GetTokenInformation() 调用可变长度结构数组? C#

    我正在关注提供的 pinvoke 代码here https stackoverflow com questions 2146153 how to get the logon sid in c 2146418 2146418但我有点害怕将可变
  • 多线程调试技术

    我想知道是否有人知道多线程应用程序调试技术的一个很好的调查 理想情况下 我正在寻找基于案例的分析 死锁 饥饿 损坏的共享状态 Net 特定的或通用的 我不知道有哪篇文章或书籍可以满足您的需求 因此这是我从 12 年 Windows 多线程调
  • 我如何知道文件已打开或正在使用? [复制]

    这个问题在这里已经有答案了 可能的重复 有没有办法检查文件是否正在使用 https stackoverflow com questions 876473 is there a way to check if a file is in use
  • .NET 的 C 代码解析器

    有谁知道 NET 的 C 解析器库吗 我打算将 C 代码解析为某种形式的对象图 这样我就可以将其转换为不同的语言 ANTLR 可以做你想做的事 它有一个 C 预处理器和 ANSI C 语法 https github com antlr gr
  • 未分配给变量的类实例是否会过早被垃圾回收?

    我什至不知道我的问题是否有意义 这只是我不明白的事情 并且在我的脑海中旋转了一段时间 考虑有以下课程 public class MyClass private int myVar public void DoSomething Do som
  • 如何解决文件被另一个进程使用的问题?

    我一直在 VS NET 2010 中调试 没有任何问题 但现在无法建造 我收到错误 Unable to copy file filename to bin Debug filename The process cannot access t
  • 检测笔记本电脑盖子的关闭和打开

    是否可以检测笔记本电脑的盖子何时打开或关闭 从我读到的内容来看 这是不可能的 但 SO 之前已经帮助我完成了不可能的任务 我发现唯一可能朝着正确方向的事情是关于报告电源按钮所需的 IOCTL 的 MSDN 博客文章 https learn
  • 如何创建实体集或模型而不在数据库中创建相应的表 - 实体框架

    我的 sqlserver 数据库中有一个存储过程 它返回多个结果集 我正在使用 msdn 中的以下链接从实体框架中的 SP 读取多个结果集 https msdn microsoft com en us library jj691402 v
  • 将固定文档/XPS 打印为 PDF,而不显示文件保存对话框

    我有一个FixedDocument我允许用户在 WPF GUI 中预览 然后打印到纸张上 而不显示任何 Windows 打印对话框 如下所示 private void Print PrintQueueCollection printQueu
  • 用户如何在winforms运行时调整控件大小

    假设我有一个图片框 现在我想要的是用户应该能够随意调整图片框的大小 但是我不知道如何开始做这件事 我搜索过互联网 但信息很少 有人至少可以指导我从哪里开始吗 这很容易做到 Windows 中的每个窗口都具有与生俱来的可调整大小的能力 它刚刚
  • 从嵌套 ToolStripMenuItem 检索时,ContextMenuStrip.Owner 属性为 null

    我有一个ContextMenuStrip设置有两个ToolStripItem是 第二ToolStripItem有两个额外的嵌套ToolStripItems 我将其定义为 ContextMenuStrip cms new ContextMen
  • 从 DataGridViewSelectedRowCollection 复制列详细信息

    我有一个 DataGridView 它绑定到一个由设计时未知的 SQL 查询返回的 DataSet 好吧 我知道查询是什么 我只是不知道用户选择了哪一个 我允许用户从表中选择一组行并单击 确定 按钮 然后我想将这些行复制到新的 DataGr
  • 实体框架中的 DbSet [重复]

    这个问题在这里已经有答案了 我在实体框架中有以下代码 using var dbc new TestDbContext var data from a in dbc tableList select new a id ToList 当我调试代
  • 有没有办法将对象(及其属性)序列化为 xml?

    创建一个类 将其命名为 FormElement 该类应该具有一些属性 例如它们具有数据元素的元数据 名称 序列号 值 只是一个字符串等 该类具有验证应用程序块验证类类型的属性 我想将其序列化为xml并反序列化 验证类的所有属性 包括验证应用
  • SecurityAction.RequestMinimum 在 .Net 4.0 中已过时

    最近 我们的 Net 客户端库正在升级以针对 Net 4 0 进行编译 将目标框架更改为4 0后 应用程序出现一些编译错误 In AssemblyInfo cs assembly SecurityPermission SecurityAct
  • 假装 .NET 字符串是值类型

    在 NET 中 字符串是不可变的 并且是引用类型变量 这通常会让新的 NET 开发人员感到惊讶 因为他们的行为可能会将它们误认为是值类型对象 然而 除了使用实践StringBuilder对于长连接 尤其是 在循环中 在实践中是否有任何理由需

随机推荐

  • Windows Server 2012 Opencv 或者javacv 运行不起来解决方法

    现象是会提示你找不到依赖 注意 可以通过安装桌面体验来解决这个问题 不要再下载什么dl l包了
  • (2022年12月最新)spring-core-rce漏洞复现CVE-2022-22965

    1 漏洞简介 2022年3月29日 Spring框架曝出RCE 0day漏洞 已经证实由于 SerializationUtils deserialize 基于 Java 的序列化机制 可导致远程代码执行 RCE 使用JDK9及以上版本皆有可
  • 行人检测(一)python+OpenCV实现

    文章目录 一 需求与准备 二 原理 三 代码实现 1 导入库 2 初始化行人检测器 3 读取视频并检测 四 检测效果 总结 一 需求与准备 做一个特定场景的视频监控 当有人进入指定区域时报警 1 实现检测人 2 实现设置任意指定检测区域 3
  • 当你第一次学习ProtoBuf时,这是你需要知道的一切

    入门ProtoBuf 从零开始的序列化与反序列化 文章目录 入门ProtoBuf 从零开始的序列化与反序列化 0 简介 1 安装 2 简单入门 3 进阶 关键字 分配标识号 字段类型 protoc的常用命令 枚举类型 消息嵌套 map类型
  • 完全二叉树

    1 什么是完全二叉树 对于一颗具有N个节点的二叉树按层序编号 如果编号I的节点与同样深度的满二叉树中编号为I的节点在二叉树中位置完全相同 则这棵树被称为完全二叉树 另一种定义 完全二叉树是由满二叉树而引出来的 若设二叉树的深度为h 除第 h
  • 数据结构-查找篇

    数据结构 查找篇 内容 思维导图 基于教材 错题复盘 计算题 基于习题解析 1 思维导图 2 错题复盘 计算题 1 对n个元素的表进行顺序查找时 若查找每个元素的概率相同 则平均查找长度为 C A n 1 2 B n 2 C n 1 2 D
  • 超市订单管理系统

    源码及论文 源码及论文下载 http www byamd xyz tag java 1 系统需求分析 超市订单管理系统是一个专为连锁店 超市等商业场所提供订单管理平台的系统 该系统的目标是建立一个订单管理平台 为需要合理规划超市供应链 供应
  • discard long time none received connection错误解决

    discard long time none received connection错误解决 1 报错信息 用druid 数据库链接 日志中一直在报 Error 内容是 discard long time none received con
  • 安卓权限记录

  • vue跨域下载img的src图片

    这里以下载img的src图片为例 首先增加需要跨域下载的接口 export const getImage url gt return axios method get url loadImg url responseType blob 这里
  • org.mybatis.spring.SqlSessionFactoryBean 报红

    这种情况说明pom xml下缺少依赖
  • 数据提取的概念和数据的分类

    1 什么是数据提取 简单的来说 数据提取就是从响应中获取我们想要的数据的过程 2 爬虫中数据的分类 结构化数据 json xml等 处理方式 直接转化为python类型 非结构化数据 HTML 处理方式 正则表达式 xpath 下面以今日头
  • 【KITTI数据集Odometry序列00-10标定文件中的参数关系解读】

    KITTI数据集Odometry序列00 10标定文件中的参数关系解读 KITTI数据集Odometry序列00 10标定文件中的参数关系解读 一 下载完整的里程计calib文件 二 calib txt文件内容解读 三 真值pose文件解读
  • Isight调用Recurdyn

    在项目中遇到isght调用recurdyn的问题 现在进行说明 RecurDyn部分 recurdyn中需要设置输入和输出 即isight给recurdyn输入的变量 recurdyn返回给isght的变量 step1 RecurDyn模型
  • PROFINET非周期数据通信详解

    PROFINET非周期数据通信详解 zhouhongkun7的博客 CSDN博客
  • 基本数据类型、运算符与表达式

    第三章基本数据类型 运算符与表达式 3 1 C语言的数据类型 在C程序中使用的每一个数据都属于唯一的一种数据类型 没有无类型的数据 一个数据也不能同属于多种数据类型 3 1 1 C语言的数据类型可分为四大类 基本类型 不可再分解为其他类型
  • 【QT】翻金币项目(QT综合案例)

    目录 1 项目简介 2 程序框架 3 程序代码 3 1 项目工程配置文件 CoinFlip pro 3 2 界面文件 mainscene ui 和 res qrc 资源添加 3 3 自定义按钮类 mypushbutton h 和 mypus
  • Selenium Web 自动化 - 项目实战(一)

    Selenium Web 自动化 测试框架 一 2016 08 05 目录 1 框架结构雏形2 把Java项目转变成Maven项目3 加入TestNG配置文件 4 Eclipse编码修改5 编写代码 5 1 封装Selenium操作 5 2
  • 为什么SpringBoot项目在使用别的框架的时候不用导入版本号?

    不管在学习过程当中还是在实战当中springboot已经逐渐成为了我们的常用框架 在用springboot项目的时候会发现 用其他框架不需要导入版本号 比如redis activemq等等J2EE框架 目录 1 Maven父子工程 2 Sp
  • c语言udp通信实例(linux)

    c语言udp通信实例 linux 2012 02 07 09 14 28 分类 C C server include