中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于S3C44B0X和uClinux的Socket通信實(shí)現(xiàn)

        基于S3C44B0X和uClinux的Socket通信實(shí)現(xiàn)

        作者: 時(shí)間:2010-09-21 來(lái)源:網(wǎng)絡(luò) 收藏


        (2)bind intbind(int sockfd,struct sockaddr*myaddr,int addrlen)

        bind函數(shù)可把socket返回的套接字端口與網(wǎng)絡(luò)上的物理位置相關(guān)聯(lián)其中sockfd參數(shù)是函數(shù)socket返回的套接字描述符;myaddr參數(shù)是本地地址;ad-drlen參數(shù)是套接字地址結(jié)構(gòu)的長(zhǎng)度服務(wù)器和客戶機(jī)都可以調(diào)用函數(shù)bind來(lái)綁定套接字地址,但一般是由服務(wù)器調(diào)用函數(shù)bind來(lái)綁定自己的公認(rèn)端口號(hào)

        (3)listenint listen(int sockfd,int backlog)

        利用該函數(shù)可以使socket端口接受從客戶機(jī)發(fā)送來(lái)的連接請(qǐng)求backlog參數(shù)是所能接受的客戶機(jī)的最大數(shù)目對(duì)socketbindlisten三個(gè)函數(shù)的綜合調(diào)用最終可在服務(wù)器上產(chǎn)生一個(gè)能接受客戶機(jī)請(qǐng)求的監(jiān)聽(tīng)文件描述符sockfd

        (4)acceptint accept(int sockfd,struct sockaddr*address,int*address_len)

        當(dāng)有客戶機(jī)發(fā)出連接請(qǐng)求時(shí),此函數(shù)初始化這個(gè)連接其中參數(shù)address用來(lái)存儲(chǔ)客戶機(jī)的信息,此信息由accept填入當(dāng)與客戶機(jī)連接時(shí),客戶機(jī)的地址與端口將填到此處;addresslen是客戶機(jī)地址長(zhǎng)度的字節(jié)數(shù),也由accept填入

        (5)connectint connect(int sockfd,struct sockaddr*address,size_t address_len)

        客戶機(jī)調(diào)用socket建立傳輸端口后,接著將調(diào)用connect函數(shù)來(lái)建立與遠(yuǎn)程服務(wù)器相連的連接線路此函數(shù)的參數(shù)調(diào)用同bind

        本文設(shè)計(jì)的采用server/client模式,即服務(wù)器端的應(yīng)用程序用于接受客戶端的連接請(qǐng)求接收客戶端的信息處理客戶端的計(jì)算請(qǐng)求向客戶端發(fā)送計(jì)算結(jié)果以及應(yīng)答信息等客戶端的應(yīng)用程序用于申請(qǐng)與服務(wù)器的連接向服務(wù)器發(fā)送計(jì)算請(qǐng)求處理服務(wù)器發(fā)回的計(jì)算結(jié)果和其它信息

        服務(wù)器在創(chuàng)建一個(gè)socket后,接著會(huì)將該socket與本地地址/端口號(hào)進(jìn)行捆綁,成功之后就在相應(yīng)的socket上監(jiān)聽(tīng),當(dāng)accpet捕捉到一個(gè)連接服務(wù)請(qǐng)求時(shí),即完成一個(gè)新的連接,稍后可向客戶端發(fā)送數(shù)據(jù)

        客戶端代碼相對(duì)來(lái)說(shuō)要簡(jiǎn)單一些,首先通過(guò)服務(wù)器域名獲得其IP地址,然后創(chuàng)建一個(gè)socket,接著調(diào)用connect函數(shù)來(lái)與服務(wù)器建立連接,連接成功之后再接收從服務(wù)器發(fā)送過(guò)來(lái)的數(shù)據(jù),最后在結(jié)束后關(guān)閉socket

        mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman
        '>綜上所述,網(wǎng)絡(luò)程序客戶端和服務(wù)器端進(jìn)行的建立步驟如下
        服務(wù)器端:socket →bind →listen→accept
        客戶端:socket →bind →connect
        本設(shè)計(jì)使用的套接字為流式套接字,下面是運(yùn)行于32位微處理器嵌入式開(kāi)發(fā)平臺(tái)的客戶端應(yīng)用程序:

        #include netdb.h>
        #include sys/stat.h>
        #include fcntl.h>
        #include sys/types.h>
        #include sys/socket.h>
        #include
        netinet/in.h>

        #include arpa/inet.h>
        #include unistd.h>
        #include stdio.h>
        #include string.h>
        int main(int argc,char *argv[])
        {
        int s;
        char buffer[256];
        struct sockaddr_in addr;
        struct hostent *hp;
        struct in_addr in;
        struct sockaddr_in local_addr;
        if (argc 2) return;
        if(!(hp=gethostbyname (argv[1]))){
        fprintf(stderr,"Can't resolve host.n");
        exit (1);
        }
        if ((s = socket(AF_
        INET,SOCK_STREAM,0)) 0){
        perror ("socket");
        exit (1);
        }
        bzero (addr,sizeof (addr));
        addr.sin_family = AF_INET;
        addr.sin_port=htons((unsigned short)atoi(argv[2]));
        hp = gethostbyname(argv[1]);
        memcpy(local_addr.sin_addr.s_addr,hp->h addr,4);
        in.s_addr = local_addr.sin_addr.s_addr;
        printf ("Domain Name %sn" argv
        printf ("IP address :%sn",inet_ntoa (in));
        printf("%s,%sn",hp->h_name,argv[2]);
        addr.sin_addr.s_addr=inet_addr(hp->h_name);
        if connect(s,(struct sockaddr *)addr,sizeof (addr))0){
        perror ("connect");
        exit (1);
        }
        recv (s,buffer,sizeof (buffer),0);
        printf ("%sn",buffer);
        while(1);
        bzero(buffer,sizeof (buffer));
        read (STDIN_FILENO,buffer,sizeof(buffer));
        if (send (s,buffer,sizeof (buffer),0)0){
        perror ("send");
        exit (1);
        }
        }
        }

        4 結(jié)束語(yǔ)

        設(shè)計(jì)開(kāi)發(fā)了的以太網(wǎng)通信系統(tǒng),并利用操作系統(tǒng)強(qiáng)大的網(wǎng)絡(luò)功能通信由于目前只支持flat格式的可執(zhí)行文件,因此本設(shè)計(jì)是在先建立好開(kāi)發(fā)環(huán)境的情況下,把用戶自行開(kāi)發(fā)的應(yīng)用程序通過(guò)宿主PC機(jī)上的交叉編譯器轉(zhuǎn)化為flat格式,然后再通過(guò)FTP添加到目標(biāo)硬件開(kāi)發(fā)平臺(tái)上運(yùn)行的文中的客戶端應(yīng)用程序已經(jīng)在ARM7TDMI核的處理器的嵌入式開(kāi)發(fā)平臺(tái)上成功運(yùn)行,并成功地和宿主PC機(jī)的服務(wù)器端應(yīng)用程序了Socket通信當(dāng)然,也可以把目標(biāo)硬件開(kāi)發(fā)平臺(tái)當(dāng)作服務(wù)器端,而把宿主PC機(jī)當(dāng)作客戶端來(lái)進(jìn)行雙向文件傳輸

        本文引用地址:http://www.antipu.com.cn/article/173211.htm

        上一頁(yè) 1 2 下一頁(yè)

        評(píng)論


        相關(guān)推薦

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

        關(guān)閉