基于PXA270嵌入式系统的Socket通信设计
3.1 客户端程序设计
客户端可以向服务器端发送连接请求,并且客户端也可以接收到来自服务器端发送回来的数据。客户端可以判断当前自己的工作状态,如连接的建立,启动的成功和数据包通信的个数等。客户端程序设计主要按以下的步骤完成函数的调用:
①建立自己的Socket(并验证建立成功);
②启动连接(并验证建立成功);
③返回连接信息;
④接收收到的数据;
⑤判断数据的属性。
客户端程序设计的程序基本流程如图3所示。
![](http://m.amcfsurvey.com/uphotos/fetch/20130729/152489_2_0.jpg)
图3 客户端程序简单示意图
客户端打开通信通道,并连接到服务器所在主机的特定端口,向服务器发送请求报文,等待并接收应答,请求结束后关闭通信通道并终止通信。客户端主要程序如下:
Int main(int argc,char *argv[])
if(argc!=3)
printf(error!!!please enter the remote IP and PORT please!!! the form like 192.168.0.* 4000n);
mysocket=socket(AF_INET,SOCK_STREAM,0); //建立一个套接字
if(mysocket==-1)
printf(error!!! failed to created the new socket,program end heren);
printf(OK-- you have successful created a socket named mysocketn);
return(0); //socket 建立不成功,回初始位置
connectcheck=connect(mysocket,(struct sockaddr*)addr_remote,sizeof(struct sockaddr));
//调用connect函数连接服务器端
if(connectcheck==-1)
printf(error!!!sorry you have failed to connect the remote server!!try again !program end heren);
// connect不成功回初始位置
printf(OK-- Now you have successful connect the server,this server IP =%s,and it's PORT =%s,now you can communicat with this server!!!!!!!n ,argv[1],argv[2])
//打印服务器IP地址和端口号
while(1)
bzero(gotbuffer,long);
number=recv(mysocket,gotbuffer,long,0);
//调用阻塞函数
if(number==-1)
printf(error!!! some thing wrong !let you can not got the data form server,program end heren);
return(0);
gotbuffer[number]=' ';
close(mysocket);
3.2 服务器端程序设计
服务器端可以快速的做出客户端的连接请求反映,服务器端反映来自客户端的连接参数,如连接的IP、连接时间、连接的当前状态等。服务器启动后根据请求提供以下服务:
①打开通信通道并告知本地主机,在某一公认地址上接收客户请求;
②等待客户请求到达该端口;
③接收到重复服务请求,处理该请求并发送应答信号;
④返回第二步,等待另一客户请求;
⑤关闭服务器。
服务器端程序设计的流程如图4所示。
tcp/ip相关文章:tcp/ip是什么
评论