1. 实验4-3:UDP客户端服务器

  • 实验目的:

熟悉UDP客户端服务器编程

  • 实验要求:

1、实现UDP客户端服务器回显程序

2、传输信息要求如下

(1)尝试用C语言结构去发送或接收一个信息包

(2)将服务器运行于开发板,客服端运行于ubuntu 12.04,抓包分析UDP协议

  • 实验步骤:
    • 服务端的程序:

      #include <stdio.h>

      #include <stdlib.h>

      #include <string.h>

      #include <unistd.h>

      #include <sys/types.h>

      #include <sys/socket.h>

      #include <netinet/in.h>

      #include <arpa/inet.h>

      #define PORT 1234

      #define BACKLOG 1

      int main()

      {

      int listenfd, connectfd;

      struct sockaddr_in server;

      struct sockaddr_in client;

      socklen_t addrlen;

      if((listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)

      {

      perror("Creating socket failed.");

      exit(1);

      }

      int opt =SO_REUSEADDR;

      setsockopt(listenfd,SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));

      bzero(&server,sizeof(server));

      server.sin_family=AF_INET;

      server.sin_port=htons(PORT);

      server.sin_addr.s_addr= htonl (INADDR_ANY);

      if(bind(listenfd, (struct sockaddr *)&server, sizeof(server)) == -1) {

      perror("Binderror.");

      exit(1);

      }

      if(listen(listenfd,BACKLOG)== -1){ /* calls listen() */

      perror("listen()error\n");

      exit(1);

      }

      addrlen =sizeof(client);

      if((connectfd = accept(listenfd,(struct sockaddr*)&client,&addrlen))==-1) {

      perror("accept()error\n");

      exit(1);

      }

      printf("Yougot a connection from cient's ip is %s, prot is %d\n",inet_ntoa(client.sin_addr),htons(client.sin_port));

      send(connectfd,"Welcometo my server.\n",22,0);

      close(connectfd);

      close(listenfd);

      return 0;

      }

    2、在客户端传送信息,并接收回显结果

#include<stdio.h>

#include <stdlib.h>

#include<unistd.h>

#include<string.h>

#include<sys/types.h>

#include<sys/socket.h>

#include<netinet/in.h>

#include<netdb.h>

#define PORT 1234

#define MAXDATASIZE 100

int main(int argc, char *argv[])

{

int sockfd, num;

char buf[MAXDATASIZE];

struct hostent *he;

struct sockaddr_in server;

if (argc!=2) {

printf("Usage:%s <IP Address>\n",argv[0]);

exit(1);

}

if((he=gethostbyname(argv[1]))==NULL){

printf("gethostbyname()error\n");

exit(1);

}

if((sockfd=socket(AF_INET, SOCK_STREAM, 0))==-1){

printf("socket()error\n");

exit(1);

}

bzero(&server,sizeof(server));

server.sin_family= AF_INET;

server.sin_port = htons(PORT);

server.sin_addr =*((struct in_addr *)he->h_addr);

if(connect(sockfd,(struct sockaddr *)&server,sizeof(server))==-1){

printf("connect()error\n");

exit(1);

}

if((num=recv(sockfd,buf,MAXDATASIZE,0)) == -1){

printf("recv() error\n");

exit(1);

}

buf[num-1]='\0';

printf("Server Message: %s\n",buf);

close(sockfd);

return 0;

}

3、在服务器接收客服端信息,显示并回显

    4、交叉编译服务器,并通过NFS共享拷贝到开发板运行

5、编译客服端,直接在ubuntu 12.04上运行

6、测试客户端与服务器能正常通过UDP传输信息

实验心得:

UDP是一种基于无连接的通信方式,该实验里,实现了一个服务器端:开发板,和一个客户端pc主机。两者进行信息的交流。上面是我的实现的截图。整个过程很是顺利。谢谢。

转载于:https://www.cnblogs.com/FORFISH/p/4201834.html

5.9UDP客户端服务器-基于OK6410相关推荐

  1. 工业无线客户端服务器,基于4G工业路由器光伏发电无线远程监控解决方案

    原标题:基于4G工业路由器光伏发电无线远程监控解决方案 一.应用背景 近年来,随着国家"节能减排"."开发利用可再生能源"等号召的提出,以及一系列相关政策和法规 ...

  2. 从服务器检索时出错dfdferh01_基于客户端-服务器的网络编程模型

    网络应用随处可见,任何时候浏览Web.发送E-mail信息或玩在线游戏,都会使用网络应用程序.有趣的是,所有的网络应用都是基于相同的基本编程模型,有着相似的整体逻辑结构,并且依赖相同的编程接口. 每个 ...

  3. k8s—centos7安装部署NFS服务器和客户端及基于nfs的动态存储storageclass使用总结

    ![技术公众号:后端技术解忧铺](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX ...

  4. 使用TDI与WinSock进行客户端服务器编程

    简介: 在本文中,您将了解到使用传输驱动程序接口TDI与应用层套接字WinSock客户端服务器应用程序内核级编程实现细节.介绍常用的TDI函数并提供编写TDI与WinSock(TCP)应用程序的详细说 ...

  5. 基于mqtt协议的消息推送服务器,基于 MQTT 协议的推送服务

    一.简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级& ...

  6. 【python网络编程】创建TCP/UDP服务器进行客户端/服务器间通信

    客户端/服务器网络编程介绍 套接字:通信端点 实例:客户端发送数据,接收服务器返回的时间戳 用Python 编写FTP 客户端程序 客户端/服务器网络编程介绍 软件服务器也运行在一块硬件之上,但是没有 ...

  7. jmx jolokia_使用Jolokia和JMX进行客户端服务器监视

    jmx jolokia Java监视工具的选择非常广泛(由Google提供的随机选择和顺序): javamelody 压力探头 JVisualVM 控制台 贾蒙 Java JMX Nagios插件不适 ...

  8. 使用Jolokia和JMX进行客户端服务器监视

    Java监视工具的选择非常广泛(由Google提供的随机选择和顺序): javamelody 压力探头 JVisualVM 控制台 贾蒙 Java JMX Nagios插件不适用 此外,还有各种专用工 ...

  9. 客户端服务器通信demo(续) -- 使用二进制协议 (附源码)

    转载连接: http://blog.csdn.net/zhuweisky/article/details/11827797 在网络上,交互的双方基于TCP或UDP进行通信,通信协议的格式通常分为两类: ...

  10. modbus虚拟服务器,modbus客户端服务器区别

    modbus客户端服务器区别 内容精选 换一换 文件系统创建完成后,用户需在客户端挂载文件共享,在本地共享目录和CSG的文件共享建立映射,通过操作本地的目录实现对CSG共享目录的操作,实现数据实时上云 ...

最新文章

  1. JS中简单原型的使用
  2. Kamailio v4.4.6 发布,开源 SIP 服务器
  3. java编程方向_java网络编程方向具体该怎么去学
  4. 《王者荣耀》宣布将推独立女子电竞赛事:跟进奥运会
  5. ip xfrm命令是做什么的?
  6. 190515每日一句
  7. 二级域名间相互请求 ajax跨域请求
  8. java程序员平均工资多少,详细说明
  9. 文件服务器 磁盘配额,文件服务器磁盘配额管理.doc
  10. 硬件基础之继电器互锁工作原理
  11. 【LoRa点对点通信与控制】
  12. MySQL~锁的大集合(S锁、X锁、意向锁、自增锁、元数据锁、记录锁、间隙锁、临键锁、全局锁、死锁)
  13. 塑源码是什么_朔源码燕窝就没有问题货吗?朔源码和非朔源码燕窝该如何选择?...
  14. 苹果手机 和安卓手机调用相机和相册
  15. java实现基金浮动_Java: 实现自回归分析/线性回归分析/基金各项指标计算等
  16. linux开发技术栈
  17. CICD使用阿里云 云效实现自动发布代码
  18. 安卓基于Frida HOOK传感器 实现虚拟运动跑步
  19. 【VRP问题】基于蚁群算法求解配送路径最短问题附matlab代码
  20. DevC++ 如何正确安装 SFML

热门文章

  1. 基于协同过滤,NMF和Baseline的推荐算法
  2. VC++常用数据类型
  3. [转]隐马尔可夫模型
  4. 操作系统定义、功能、特征、分类介绍
  5. 20145202马超《信息安全系统设计基础》实验三总结
  6. android dialog转layout
  7. C#轻量级通通讯组件StriveEngine —— C/S通信开源demo(2) —— 使用二进制协议 (附源码)...
  8. .sln文件和.suo文件的解释
  9. iOS 关于修饰代理用weak还是assign
  10. PHP基础--PDO的常用操作