新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 嵌入式Linux网络编程之:网络基础编程

嵌入式Linux网络编程之:网络基础编程

作者:时间:2013-09-13来源:网络收藏

本文引用地址:http://www.eepw.com.cn/article/257116.htm

(3)使用实例。

该实例分为客户端和服务器端两部分,其中服务器端首先建立起socket,然后与本地端口进行绑定,接着就开始接收从客户端的连接请求并建立与它的连接,接下来,接收客户端发送的消息。客户端则在建立socket之后调用connect()函数来建立连接。

服务端的代码如下所示:

/*server.c*/

#includesys/types.h>

#includesys/socket.h>

#includestdio.h>

#includestdlib.h>

#includeerrno.h>

#includestring.h>

#includeunistd.h>

#includenetinet/in.h>

#definePORT4321

#defineBUFFER_SIZE1024

#defineMAX_QUE_CONN_NM5

intmain()

{

structsockaddr_inserver_sockaddr,client_sockaddr;

intsin_size,recvbytes;

intsockfd,client_fd;

charbuf[BUFFER_SIZE];

/*建立socket连接*/

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

{

perror(socket);

exit(1);

}

printf(Socketid=%dn,sockfd);

/*设置sockaddr_in结构体中相关参数*/

server_sockaddr.sin_family=AF_INET;

server_sockaddr.sin_port=htons(PORT);

server_sockaddr.sin_addr.s_addr=INADDR_ANY;

bzero((server_sockaddr.sin_zero),8);

inti=1;/*允许重复使用本地地址与套接字进行绑定*/

setsockopt(sockfd,SOL_,SO_REUSEADDR,i,sizeof(i));

/*绑定函数bind()*/

if(bind(sockfd,(structsockaddr*)server_sockaddr,

sizeof(structsockaddr))==-1)

{

perror(bind);

exit(1);

}

printf(Bindsuccess!n);

/*调用listen()函数,创建未处理请求的队列*/

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

{

perror(listen);

exit(1);

}

printf(Listening....n);

/*调用accept()函数,等待客户端的连接*/

if((client_fd=accept(sockfd,

(structsockaddr*)client_sockaddr,sin_size))==-1)

{

perror(accept);

exit(1);

}

/*调用recv()函数接收客户端的请求*/

memset(buf,0,sizeof(buf));

if((recvbytes=recv(client_fd,buf,BUFFER_SIZE,0))==-1)

{

perror(recv);

exit(1);

}

printf(Receivedamessage:%sn,buf);

close(sockfd);

exit(0);

}

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

linux相关文章:linux教程




评论


相关推荐

技术专区

关闭