5.9UDP客户端服务器-基于OK6410
实验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相关推荐
- 工业无线客户端服务器,基于4G工业路由器光伏发电无线远程监控解决方案
原标题:基于4G工业路由器光伏发电无线远程监控解决方案 一.应用背景 近年来,随着国家"节能减排"."开发利用可再生能源"等号召的提出,以及一系列相关政策和法规 ...
- 从服务器检索时出错dfdferh01_基于客户端-服务器的网络编程模型
网络应用随处可见,任何时候浏览Web.发送E-mail信息或玩在线游戏,都会使用网络应用程序.有趣的是,所有的网络应用都是基于相同的基本编程模型,有着相似的整体逻辑结构,并且依赖相同的编程接口. 每个 ...
- k8s—centos7安装部署NFS服务器和客户端及基于nfs的动态存储storageclass使用总结
![技术公众号:后端技术解忧铺](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX ...
- 使用TDI与WinSock进行客户端服务器编程
简介: 在本文中,您将了解到使用传输驱动程序接口TDI与应用层套接字WinSock客户端服务器应用程序内核级编程实现细节.介绍常用的TDI函数并提供编写TDI与WinSock(TCP)应用程序的详细说 ...
- 基于mqtt协议的消息推送服务器,基于 MQTT 协议的推送服务
一.简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级& ...
- 【python网络编程】创建TCP/UDP服务器进行客户端/服务器间通信
客户端/服务器网络编程介绍 套接字:通信端点 实例:客户端发送数据,接收服务器返回的时间戳 用Python 编写FTP 客户端程序 客户端/服务器网络编程介绍 软件服务器也运行在一块硬件之上,但是没有 ...
- jmx jolokia_使用Jolokia和JMX进行客户端服务器监视
jmx jolokia Java监视工具的选择非常广泛(由Google提供的随机选择和顺序): javamelody 压力探头 JVisualVM 控制台 贾蒙 Java JMX Nagios插件不适 ...
- 使用Jolokia和JMX进行客户端服务器监视
Java监视工具的选择非常广泛(由Google提供的随机选择和顺序): javamelody 压力探头 JVisualVM 控制台 贾蒙 Java JMX Nagios插件不适用 此外,还有各种专用工 ...
- 客户端服务器通信demo(续) -- 使用二进制协议 (附源码)
转载连接: http://blog.csdn.net/zhuweisky/article/details/11827797 在网络上,交互的双方基于TCP或UDP进行通信,通信协议的格式通常分为两类: ...
- modbus虚拟服务器,modbus客户端服务器区别
modbus客户端服务器区别 内容精选 换一换 文件系统创建完成后,用户需在客户端挂载文件共享,在本地共享目录和CSG的文件共享建立映射,通过操作本地的目录实现对CSG共享目录的操作,实现数据实时上云 ...
最新文章
- JS中简单原型的使用
- Kamailio v4.4.6 发布,开源 SIP 服务器
- java编程方向_java网络编程方向具体该怎么去学
- 《王者荣耀》宣布将推独立女子电竞赛事:跟进奥运会
- ip xfrm命令是做什么的?
- 190515每日一句
- 二级域名间相互请求 ajax跨域请求
- java程序员平均工资多少,详细说明
- 文件服务器 磁盘配额,文件服务器磁盘配额管理.doc
- 硬件基础之继电器互锁工作原理
- 【LoRa点对点通信与控制】
- MySQL~锁的大集合(S锁、X锁、意向锁、自增锁、元数据锁、记录锁、间隙锁、临键锁、全局锁、死锁)
- 塑源码是什么_朔源码燕窝就没有问题货吗?朔源码和非朔源码燕窝该如何选择?...
- 苹果手机 和安卓手机调用相机和相册
- java实现基金浮动_Java: 实现自回归分析/线性回归分析/基金各项指标计算等
- linux开发技术栈
- CICD使用阿里云 云效实现自动发布代码
- 安卓基于Frida HOOK传感器 实现虚拟运动跑步
- 【VRP问题】基于蚁群算法求解配送路径最短问题附matlab代码
- DevC++ 如何正确安装 SFML
热门文章
- 基于协同过滤,NMF和Baseline的推荐算法
- VC++常用数据类型
- [转]隐马尔可夫模型
- 操作系统定义、功能、特征、分类介绍
- 20145202马超《信息安全系统设计基础》实验三总结
- android dialog转layout
- C#轻量级通通讯组件StriveEngine —— C/S通信开源demo(2) —— 使用二进制协议 (附源码)...
- .sln文件和.suo文件的解释
- iOS 关于修饰代理用weak还是assign
- PHP基础--PDO的常用操作