基于嵌入式系统的串口网络服务器的设计
char buff[1024];int Len;int readByte = read(fd,buff,Len);
3.2 网络程序的设计
Linux系统是通过提供套接字(socket)来进行网络编程的。网络程序通过socket和其它几个函数的调用,会返回一个 通讯的文件描述符,我们可以将这个描述符看成普通的文件的描述符来操作,这就是linux的设备无关性的 好处。我们可以通过向描述符读写操作实现网络之间的数据交流。以下介绍一下程序设计时常用的函数。
(1) socket
int socket(int domain, int type,int protocol)
domain:说明我们网络程序所在的主机采用的通讯协族(AF_UNIX和AF_INET等)。
type:我们网络程序所采用的通讯协议。
protocol:由于我们指定了type,所以这个地方我们一般只要用0来代替就可以了。
(2) bind
int bind(int sockfd, struct sockaddr *my_addr, int addrlen)
sockfd:是由socket调用返回的文件描述符。
addrlen:是sockaddr结构的长度。
my_addr:是一个指向sockaddr的指针。
(3) listen
int listen(int sockfd,int backlog)
sockfd:是bind后的文件描述符。
backlog:设置请求排队的最大长度。当有多个客户端程序和服务端相连时, 使用这个表示可以介绍的排队长度。 listen函数将bind的文件描述符变为监听套接字。返回的情况和bind一样。
(4) accept
int accept(int sockfd, struct sockaddr *addr,int *addrlen)
sockfd:是listen后的文件描述符。
(5)connect
int connect(int sockfd, struct sockaddr * serv_addr,int addrlen)。
sockfd:socket返回的文件描述符。
serv_addr:储存了服务器端的连接信息。其中sin_add是服务端的地址。
addrlen:serv_addr的长度。
connect函数是客户端用来同服务端连接的。
总的来说网络程序是由两个部分组成的--客户端和服务器端。它们的建立步骤一般是: 服务器端 socket-->bind-->listen-->accept。客户端 socket-->connect。本文引用地址:https://www.eepw.com.cn/article/152360.htm
4 结语
本串口服务器,采用三星公司的S3C4510B ARM7系列微处理器及uClinux操作系统,通过编程实现了串口数据到以太网口或以太网口到串口的数据转换。经过几个月的运行,证明稳定可靠。由于ARM系列微处理器的优异性能,本系统上完全可以再加上1/2/4/8个RS-485/422/232串口,轻松连接网络并管理数量众多且分散在不同位置的串行设备。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论