socket在计算机通信领域被称作“套接字”,是网络通信的一种方式,在AWorks系统中如何用于socketAPI创建服务器与客户端,展开数据通信呢?本文将详尽为你讲解。阐述要撰写通过计算机网络通信的程序,首先要确认这些程序互相通信用于的协议,一般来说用于TCP或UDP协议族。TCP是面向相连的传输协议,创建相连时必须经过三次问候,断开连接时必须经过四次问候,中间传输数据也要恢复ACK包在展开证实。
而UDP所谓相连的传输协议,没创建相连和断开连接的过程,它只是非常简单的把数据丢到网络中,也不具体区分服务器和客户端。因此TCP比UDP协议更为可信,且TCP和UDP编程大致相同,所以本文就以TCP协议为事例,创建图1右图的基本客户/服务器网络模型,展开通信。图1基本服务器-客户端模型基本套接字编程图2得出了一对客户与服务器进程之间再次发生的典型事件的时间表。服务器首先启动,几天后客户端启动相连到服务器。
所有的客户和服务器都从调用socket开始,它回到套接字描述符;客户随后调用connect,服务器则调用bind、listen和accept;创建相连之后调用send、recv函数展开数据传输。数据传输已完成后,套接字用于标准的closesocket函数重开。图2基本客户/服务器程序的套接字函数socket()函数:登录希望的通信协议类型(用于IPv4的TCP、用于IPv6的UDP等)创立套接字;blind()函数:将套接字与本地的IP地址和端口初始化;connect()函数:客户端向服务器收到相连催促;listen()函数:仅有服务器调用,使套接字转入被动监听状态。所谓被动监听是指当没客户端催促时,套接字正处于“睡眠中”状态,只有当接管到客户端催促时,套接字才不会被苏醒来号召催促;accept()函数:当套接字正处于监听状态时,可以通过aceept函数来接管客户端的催促;send/recv()函数:发送到和接管函数;closesocket()函数:重开套接字,重复使用资源。
网络连接与配备socket通信程序基于网络之上,常规的开发板一般都装载以太网外设,所以本文以以太网为事例,配备开发板的网络连接。首先必须用网线相连开发板的网口和电脑,来创建网络的物理相连。其次在AWorkssdk包中的aw_prj_params.h文件中关上以太网设备宏,如程序清单1。程序清单1关上以太网配备宏再度在awbl_hwconf_imx1050_enet.h文件中配备以太网的IP地址、子网掩码和网关,并重开dhcp,用于静态的IP地址,如程序清单2。
程序清单2IP地址设置最后改动电脑为静态IP地址并与开发板IP地址坐落于同一网段。TCP客户端实例按照基本的套接字编程流程,创建一个客户端,我们只必须调用socket、connect、send、recv、closesocket函数才可,如程序清单3,首先用于socket创立一个TCP类型的套接字,再行调用connect相连到已登录的服务器(IP地址为192.168.1.34、端口号为4000),当服务器端接管客户端的相连催促后,connect函数解散阻塞状态,转入循环,再行在循环中调用send函数向服务器发送数据,调用recv函数(堵塞)接收数据。当数据传输已完成后,用于closesocket重开相连,重复使用资源。
程序清单3Echo客户端程序程序撰写已完成后,我们用于TCP上位机软件测试。关上TCP调试软件,如图3。创立服务器,如图4。
最后启动服务器,如图5。图3TCP调试工具图4创立服务器图5启动服务器以上步骤准备就绪后,在主程序中调用demo_tcp_client_entry()入口函数,编译器、iTunes程序到开发板,待程序运行之后,可以在shell界面看见TCP客户端相连顺利,如图6,此时在上位机软件上可以看见创建的TCP相连,在发送到区域向客户端发送数据,在接管区将看见客户端回发的数据,如图7。
shell界面打印机客户端接到的数据,如图8。
本文关键词:ky开元官网,AWorks,编程,—,socket,通信,socket,在,计算机,通信
本文来源:ky开元官网-www.brownbagtv.com