新聞中心

        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教程




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 宁海县| 喀喇| 濉溪县| 铜鼓县| 佳木斯市| 漠河县| 营山县| 辉南县| 宜阳县| 开阳县| 聂拉木县| 行唐县| 苏尼特右旗| 荆州市| 隆子县| 安龙县| 清镇市| 南华县| 辉县市| 繁昌县| 游戏| 岗巴县| 南雄市| 长宁区| 南投县| 邹平县| 旅游| 内黄县| 城步| 上虞市| 金堂县| 苏州市| 蒙山县| 山东| 扬州市| 平果县| 小金县| 会宁县| 文水县| 明溪县| 克山县|