2.开发模式嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。表1.2常用嵌入式开发工具......
2023-11-19
【例10.6】面向连接的echo服务编程实例
echo_client.c是客户端程序,在和服务端建立连接后发送字符串到服务端,并且接收服务端发送的字符串显示在屏幕上。
程序在第24行使用socket()函数创建了套接字句柄,之后设置sockaddr结构,填入服务端IP地址和端口号。第40行使用connect()函数向服务端发起连接,如果连接成功,开始数据传输。第48行~55行通过send()函数发送字符串到服务端,使用recv()函数接收服务端发送的数据,并且打印在屏幕上,第53行判断如果服务端发送字符串“quit”,则退出循环。第57行关闭套接字。
两个程序编译后,需要在不同的控制台界面执行。执行服务端程序s后,打印信息如下:
success to create socket3
success to bind address!
success to listen
表示套接字创建成功,并且绑定到指定的端口上。之后在另一个控制台运行客户端程序,控制台输入如下。
success to create socket3
success connect to server!
data send:def receive:def
data send:test receive:test
data send:hello receive:hello
data send:quit receive:quit
显示出成功创建套接字的提示,并且打印5行信息,客户端发送的字符串并未接收到服务端返回的字符串,最后一个字符串是“quit”,表示退出连接。在服务端也会得到类似的信息:
number of receive bytes=100 data=abc
number of receive bytes=100 data=def(www.chuimin.cn)
number of receive bytes=100 data=test
number of receive bytes=100 data=hello
number of receive bytes=100 data=quit
【例10.7】无连接的套接字通信服务编程实例
客户端的操作很简单,创建套接字成功后就可以收发数据了。程序第22行调用socket()函数创建套接字,注意第二个参数是SOCK_DGRAM表示创建无连接的数据报套接字。第30~32行设置了服务端的IP和端口号。第37行使用sendto()函数向服务端发送“time”命令,第44行使用recvfrom()函数接收服务端返回并且打印。第55行发送“quit”命令,通知服务端退出。第62行关闭套接字。
服务器端和客户端程序编译后在不同的控制台界面执行,服务端输出结果如下:
Create socket:Success
Bind socketwaiting request from client…
client request:time
client request:quit
服务端打印了创建套接字成功,绑定套接字成功,之后进入循环等待客户端的数据,最后两行打印出了客户端发送来的命令,最后程序退出。客户端的执行结果如下:
Create socket:Success
Send time request
time from server:Sat Jun 15 09:36:03 2013
send quit command
从结果可以看出,客户端创建套接字后不需要连接就可以直接收发数据,先是发送时间请求,之后得到服务器返回的时间,最后发送退出命令,关闭连接。
有关ARM嵌入式系统原理与应用的文章
2.开发模式嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。表1.2常用嵌入式开发工具......
2023-11-19
面向连接的echo服务编程实例本节给出一个echo服务的编程实例,echo_serv.c是服务端源代码,提供创建服务端,绑定套接字到本机IP和8080端口,当收到客户端发送的字符串就在屏幕打印出来,并把字符串发送给客户端,如果客户端发送“quit”,服务器端退出。第77行关闭和用户建立的连接,第78行关闭服务端监听的套接字。......
2023-11-19
Linux软件开发一直在Internet环境下讲行。Linux开发工作经常是在Linux用户决定共同完成一个项目时开始的。由于这个活跃的开发环境,新的以Linux为基础的软件功能日益强大,而且呈现爆炸式的增长态势。许多流行的Linux实用程序如C编译器、shell和编辑器都是GNU软件应用程序。Linux程序需要首先转化为低级机器语言即所谓的二进制代码以后,才能被操作系统执行。......
2023-11-19
具体来说,嵌入式系统是以应用为中心、计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。可以这样认为,嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。表1.1对比了通用计算机系统与嵌入式系统。......
2023-11-19
互联网采用TCP/IP协议并不是ISO规定的标准协议,但是作为应用最广泛的协议已经成为大规模网络通信的事实标准。TCP/IP协议实际上是由一组协议组成的,通常也称作TCP/IP协议簇。图10.10IPv4协议头部从图中可以看出这是个复杂的结构,最常用字段是源地址和目的地址,用来寻址和查路由。如图10.9所示,TCP协议位于网络互联层后,是IP协议的上层协议。......
2023-11-19
S5PV210处理器中采用的是异步串行通信方式。异步串行通信通常以字符为单位组成字符帧传送。在串行通信中,数据位的发送和接收分别由发送时钟脉冲和接收时钟脉冲进行定时控制。......
2023-11-19
ATPCS规定了一些子程序间调用的基本规则,这些规则包括子程序调用过程中寄存器的使用规则,数据栈的使用规则,参数的传递规则。下面详细介绍子程序间调用的基本规则。寄存器SP在进入子程序时的值和退出子程序时的值必须相等。......
2023-11-19
解压缩所有软件包把Qtopia用到的软件包存放到qtopia-arm目录下,然后执行下面的解压缩过程:tar-zxvf tmake-1.11.tar.gztar-zxvf qt-embedded-2.3.7.tar.gztar-zxvf qtopia-free-1.7.0.tar.gztar-zxvf qt-xl1-2.3.2.tar.gztar-zxvf konqueror-embedded-snapshot-20030705.tar.gz修改软件包目录名称mv konqueror-embedded-snapshot-20030705 konqmv tmake-1.11 tmakemv qt-2.3.7/qtmv qtopia-free-1.7.0 qtopiamv qt-2.3.2 qt-x11软件包目录修改完毕后,可以开始编译过程。编译结束后,把应用程序复制到bin目录下,由于uic和designer在编译结束后会自动复制到bin目录,因此最后一行仅复制qvfb到bin目录。4个Qt工具准备好之后,首先使用strip工具去掉工具中的调试信息:strip bin/uic bin/moc bin/designer bin/qvfb然后复制4个工具到Qt目录,为后面编译Qt的工作做好准备。......
2023-11-19
相关推荐