5.9UDP客户端服务器-基于OK6410

发布者:BlossomSunrise最新更新时间:2024-10-22 来源: cnblogs关键字:OK6410 手机看文章 扫描二维码
随时随地手机看文章
  1. 实验4-3:UDP客户端服务器

  • 实验目的:

熟悉UDP客户端服务器编程

 

  • 实验要求:

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

2、传输信息要求如下

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

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

 

  • 实验步骤:

     

    • 服务端的程序:

      #include

      #include

      #include

      #include

      #include

      #include

      #include

      #include

       

      #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()errorn');

      exit(1);

      }

      addrlen =sizeof(client);

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

      perror('accept()errorn');

      exit(1);

      }

      printf('Yougot a connection from cient's ip is %s, prot is %dn',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

#include

#include

#include

#include

#include

#include

#include

 

#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 n',argv[0]);

exit(1);

}

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

printf('gethostbyname()errorn');

exit(1);

}

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

printf('socket()errorn');

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()errorn');

exit(1);

}

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

printf('recv() errorn');

exit(1);

}

buf[num-1]='';

printf('Server Message: %sn',buf);

close(sockfd);

return 0;

}

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

 

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

 

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

 

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

实验心得:

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


关键字:OK6410 引用地址:5.9UDP客户端服务器-基于OK6410

上一篇:3.5根文件系统的制作
下一篇:7.点亮led的操作

推荐阅读最新更新时间:2026-03-20 10:44

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 ar
[单片机]
5.9<font color='red'>UDP</font><font color='red'>客户端</font><font color='red'>服务器</font>-基于<font color='red'>OK6410</font>
移植OK6410 LCD驱动
1.本次移植过程选择 linux-2.6.28 lcd驱动为参考移植到 linux-2.6.34 ok6410 开发板上。 2.移植过程 主要以给内核增加驱动的思想,在/driver/video/ 下增加 samsung目录,提取 2.6.28 中驱动相关源代码,将源代码复制到samsung 下。 修改 /driver/video 下的Makefile 文件,增加进入samsung目录编译的编译条目 obj-$(CONFIG_FB_S3C) += samsung/ 修改 /driver/video 下的Kconfig 文件,增加 /samsung/Kconfig 配置条目 comment F
[单片机]
移植<font color='red'>OK6410</font> LCD驱动
记录Ok6410 sd 启动uboot
1\参考资料https://github.com/SeanXP/ARM-Tiny6410/tree/master/no-os/sd-no-os/u-boot 2\参考资料https://blog.csdn.net/xinxin_2011/article/details/85228961 3编译sd ram128版本的uboot make ARCH=arm CROSS_COMPILE=$(编译器路径)/arm-linux- forlinx_sd_ram128_config make ARCH=arm CROSS_COMPILE=$(编译器路径)/arm-linux- all -j8 4操作编译出来的u-boot.bin cat
[单片机]
记录<font color='red'>Ok6410</font> sd 启动uboot
ok6410 nandflash 启动uboot 超过256k怎么办
1\在调试ok6410 nandflash启动uboot时,需要添加调试信息,导致uboot大于256k 2需要修改下面几个地方 参考资料 在uboot中可以添加文字菜单,但是不够美观。 利用photoshop制作一张jpg菜单图片,在ubuntu中使用jpeg2bmp.sh将jpg图片转换成bmp格式 uboot/tools/bmp_logo.c编译生成的工具bmp_logo可以根据bmp格式图片生成bmp_logo.h,图片的信息存储在数组当中。当图片的分配率越大,转换成的数组越大,导致最后编译的uboot.bin越大。当uboot.bin超过242K时,下载uboot到flash后不可启动。 解决办法: 在
[单片机]
<font color='red'>ok6410</font> nandflash 启动uboot 超过256k怎么办
JLink+GDBServer调试S3C6410裸板的初始化代码 For OK6410开发板
要调试裸板,有两种初始化方法,一个是用烧好的uboot初始化,再有就是直接用JLink+GDBServer初始化。代码参考了网上的资料,根据手头的OK6410开发板做了修改。整体代码如下: # Connect to the J-Link GDBServer target remote localhost:2331 # Set JTAG speed to 30 kHz monitor endian little monitor speed 30 # Reset the target monitor reset monitor sleep 10 # # CPU core initialization # # Set the pr
[单片机]
ok6410内存初始化
•DRAM:它的基本原件是小电容,电容可以在两个极板上保留电荷,但是需要定期的充电(刷新),否则数据会丢失。缺点:由于要定期刷新存储介质,存取速度较慢。 •SRAM:它是一种具有静止存取功能的内存,不需要定期刷新电路就能保存它内部存储的数据。其优点:存取速度快; 但是缺点是:功耗大,成本高。常用作存储容量不高,但存取速度快的场合,比如steppingstone. 在嵌入式硬件体系中,除了CPU内部的”垫脚石”采用SRAM外,板载内存一般会采用DRAM,而DRAM又可以分为SDRAM,DDR,DDR2等。 SDRAM(Synchronous Dynamic Random AccessMemory):同步动态随机存储器. 同步:
[单片机]
<font color='red'>ok6410</font>内存初始化
ok6410 3.0.1内核调用V4L接口出错解决方法
在做视频监控项目,以前一直用的是2.6.36的内核,一直很正常,但是这几天换3.0.1内核,启动程序,却出现了错误,如下: ./test_usb_camera XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX v4l2_open id=2 Unable to handle kernel NULL pointer dereference at virtual address 00000060 pgd = cbc08000 *pgd=5c7d6831, *pte=00000000, *ppte=00000000 Internal error: Oops: 17 Modules l
[单片机]
ok6410 u-boot-2012.04.01移植六完善MLC NAND支持
继ok6410 u-boot-2012.04.01移植四、五后,开发板基本已支持MLC NAND,支持DM9000.但是通过NAND命令更新u-boot到NAND,还存在问题,需要根据u-boot的nand命令继续修改,最终实现通过网卡tftp程序到内存,接着通过NAND命令写到NAND。 开发环境: 系统:ubuntu 10.04.4 单板:ok6410 NAND FLASH:K9GAG08U0D 2048MB NOR Flash:EN29LV160AB 2MB DDR:K4X1G163PCX2 256MB NET:DM9000AEP 编译器:arm-linux-gcc-4.3.2 搭建开发环境详见ubuntu 10.04.4开
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved