微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于HMS30C7202嵌入式系统的通信程序设计

基于HMS30C7202嵌入式系统的通信程序设计

时间:12-21 来源:互联网 点击:


本文分别以ARM板为服务器端和客户端来介绍具体程序。分别实现了两种模式下的TCP通信。即:ARM板作为服务器端,PC机作为客户端。ARM板作为客户端,PC机作为服务器端。用以太网口连接,实现信息的通讯。

模式一

ARM板作为服务器端,PC机作为客户端。按流程编写具体程序如下:

#define MYPORT 3490 //服务器监听的端口

#define BACKLOG 10 //能够同时接受的连接数量

int sockfd,newfd; //在sockfd上进行监听,用newfd接受新的连接

struct sockaddr_in my_addr; //存放自己的地址信息

struct sockaddr_in their_addr; //存放连接者的地址信息

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

{

perror("socket");

exit(1);

} //建立套接字,判断是否出错,如果出错,返回出错信息

my_addr.sin_family = AF_INET; //主机字节顺序

my_addr.sin_port = htons(MYPORT); //网络字节顺序

my_addr.sin_addr.s_addr = INADDR_ANY; //将本机IP自动填充

bzero(&(my_addr.sin_zero),8); //结构其他部分清零

if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))== -1)

{

perror("bind");

exit(1);

} //绑定本地IP地址和端口

if (listen(sockfd, BACKLOG) == -1)

{

perror("listen");

exit(1);

} //监听端口

while(1)

{

sin_size = sizeof(struct sockaddr_in);

if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size))

== -1) {

perror("accept");

continue;

} //返回新的套接字描述符,就是跟远程计算机的连接,第一个套接字描述符仍然在机器原来的哪个端口listen()

if (!fork()) //建立子进程处理连接

if (numbytes=(recv(new_fd, buf, maxdatasize,0)) == -1)

{

perror("recv");

exit(1);

} //接收客户端发送的信息进缓冲区

close(newfd); //关闭套接字

程序实现在ARM板上监听3490端口,准备接收建立连接的远程计算机送来的信息。

printf("Received: %s",buf);可以显示缓冲区中远程计算机送来的信息。

模式二

ARM板作为客户端,PC机作为服务器端。按流程编写程序如下:

#define PORT 3490 //定义远程端口信息

#define DEST_IP "210.43.8.21" //定义远程计算机IP信息

struct sockaddr_in their_addr; //定义结构存放远程计算机地址

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

{

perror("socket");

exit(1);

} //建立套接字

if (connect(sockfd, (struct sockaddr *)&their_addr,sizeof(struct sockaddr))

== -1)

{

perror("connect");

exit(1);

} //连接远程计算机

if ((send(sockfd, "hello,my world!\n", MAXDATASIZE, 0)) == -1)

{

perror("send");

exit(1);

} //向服务器发送数据

close(sockfd); //发送完成关闭套接字

程序实现了从ARM板通过3490端口连接远程计算机,连接成功后发送数据。

此程序实现了板机之间的信息通讯,为自动售货机与服务器之间的通信打下了坚实基础。为自动售货机的网络化提供了一个可行的手段。

5.总结

TCP/IP协议已成为目前最为重要的以太网协议,TCP通信已经成为嵌入式系统有线通信的主要方式。ARM板既可以作为客户端也可以作为服务器端,这种通信方式应用广泛,具有很高的研究价值。

本文作者创新点在于对基于TCP/IP协议的嵌入式板机网络通信程序的设计与开发技术进行了研究,给出了基于TCP协议的板机通信程序的编写方法,实现了PC机与ARM板的通信。为以后基于网络的嵌入式系统的应用和通讯程序开发打下了坚实的基础。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top