新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式Linux網絡編程之:網絡基礎編程

        嵌入式Linux網絡編程之:網絡基礎編程

        作者: 時間:2013-09-13 來源:網絡 收藏

        本文引用地址:http://www.104case.com/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教程




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 博罗县| 华安县| 登封市| 岳阳市| 合川市| 丹凤县| 铜梁县| 沾益县| 建德市| 称多县| 泾源县| 彰化市| 奉新县| 高邮市| 南昌市| 怀安县| 澳门| 山西省| 郑州市| 云霄县| 鄂托克旗| 福海县| 黔江区| 铁力市| 天柱县| 敖汉旗| 屯昌县| 桦甸市| 剑阁县| 专栏| 安徽省| 兴安县| 汉中市| 仪征市| 南昌县| 双峰县| 兴宁市| 仪陇县| 三台县| 九龙县| 新丰县|