<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式Linux網(wǎng)絡(luò)編程之:網(wǎng)絡(luò)基礎(chǔ)編程

          嵌入式Linux網(wǎng)絡(luò)編程之:網(wǎng)絡(luò)基礎(chǔ)編程

          作者: 時(shí)間:2013-09-13 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/257116.htm

          (3)使用實(shí)例。

          該實(shí)例分為客戶端和服務(wù)器端兩部分,其中服務(wù)器端首先建立起socket,然后與本地端口進(jìn)行綁定,接著就開始接收從客戶端的連接請(qǐng)求并建立與它的連接,接下來,接收客戶端發(fā)送的消息。客戶端則在建立socket之后調(diào)用connect()函數(shù)來建立連接。

          服務(wù)端的代碼如下所示:

          /*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);

          /*設(shè)置sockaddr_in結(jié)構(gòu)體中相關(guān)參數(shù)*/

          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;/*允許重復(fù)使用本地地址與套接字進(jìn)行綁定*/

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

          /*綁定函數(shù)bind()*/

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

          sizeof(structsockaddr))==-1)

          {

          perror(bind);

          exit(1);

          }

          printf(Bindsuccess!n);

          /*調(diào)用listen()函數(shù),創(chuàng)建未處理請(qǐng)求的隊(duì)列*/

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

          {

          perror(listen);

          exit(1);

          }

          printf(Listening....n);

          /*調(diào)用accept()函數(shù),等待客戶端的連接*/

          if((client_fd=accept(sockfd,

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

          {

          perror(accept);

          exit(1);

          }

          /*調(diào)用recv()函數(shù)接收客戶端的請(qǐng)求*/

          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操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          linux相關(guān)文章:linux教程




          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();