嵌入式Linux网络编程之:网络基础编程
客户端的代码如下所示:
/*client.c*/
#includestdio.h>
#includestdlib.h>
#includeerrno.h>
#includestring.h>
#includenetdb.h>
#includesys/types.h>
#includenetinet/in.h>
#includesys/socket.h>
#definePORT4321
#defineBUFFER_SIZE1024
intmain(intargc,char*argv[])
{
intsockfd,sendbytes;
charbuf[BUFFER_SIZE];
structhostent*host;
structsockaddr_inserv_addr;
if(argc3)
{
fprintf(stderr,USAGE:./clientHostname(oripaddress)Textn);
exit(1);
}
/*地址解析函数*/
if((host=gethostbyname(argv[1]))==NULL)
{
perror(gethostbyname);
exit(1);
}
memset(buf,0,sizeof(buf));
sprintf(buf,%s,argv[2]);
/*创建socket*/
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror(socket);
exit(1);
}
/*设置sockaddr_in结构体中相关参数*/
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(PORT);
serv_addr.sin_addr=*((structin_addr*)host->h_addr);
bzero((serv_addr.sin_zero),8);
/*调用connect函数主动发起对服务器端的连接*/
if(connect(sockfd,(structsockaddr*)serv_addr,
sizeof(structsockaddr))==-1)
{
perror(connect);
exit(1);
}
/*发送消息给服务器端*/
if((sendbytes=send(sockfd,buf,strlen(buf),0))==-1)
{
perror(send);
exit(1);
}
close(sockfd);
exit(0);
}
在运行时需要先启动服务器端,再启动客户端。这里可以把服务器端下载到开发板上,客户端在宿主机上运行,然后配置双方的IP地址,在确保双方可以通信(如使用ping命令验证)的情况下运行该程序即可。
$./server
Socketid=3
Bindsuccess!
Listening....
Receivedamessage:Hello,Server!
$./clientlocalhost(或者输入IP地址)Hello,Server!
linux操作系统文章专题:linux操作系统详解(linux不再难懂)linux相关文章:linux教程
评论