亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? ppppeer.c

?? A peer-to-peer file sharing system under UNIX environment.
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <fcntl.h>#include <sys/socket.h>#include <netinet/in.h>#include <netdb.h>#include <arpa/inet.h>#include <errno.h>#include <sys/stat.h>#include <sys/mman.h>#include <sys/types.h> #include <sys/param.h> #include <sys/ioctl.h> #include <net/if.h> #include <net/if_arp.h> #define MAXINTERFACES   16 #define MAXLINE 8192#define LISTENQ 1024#define MAXQUERY 100#define FALSE 0#define TRUE 1typedef struct sockaddr SA;#define RIO_BUFSIZE 8192typedef struct {    int rio_fd;                /* descriptor for this internal buf */    int rio_cnt;               /* unread bytes in internal buf */    char *rio_bufptr;          /* next unread byte in internal buf */    char rio_buf[RIO_BUFSIZE]; /* internal buffer */} rio_t;/* deregister all the entry from indexing server */void deregister(char *host, int port);  /* add entry to the indexing server */void add_entry(char *host, int port, char* title);/* add entry to the local file: peerlist */void add_myfile(char *title, char *filename);/* Get the local host IP address */char* getLocalIP();/* The Rio package - robust I/O functions */ssize_t rio_readn(int fd, void *usrbuf, size_t n);ssize_t rio_writen(int fd, void *usrbuf, size_t n);void rio_readinitb(rio_t *rp, int fd); ssize_t	rio_readnb(rio_t *rp, void *usrbuf, size_t n);ssize_t	rio_readlineb(rio_t *rp, void *usrbuf, size_t maxlen);char *localhost;  // localhost IP addressint myport;       // localhost p2p port numberchar** queryresult;  // Store at most MAXQUERY query results from indexing serverint main(int argc, char** argv){    int clientfd, port, listenfd;    char *host, buf[MAXLINE];    rio_t rio;    FILE *filelist;    char *prompt;    char *token;    int get;    int querycount = 0;    queryresult = (char **)malloc(sizeof(char *) * MAXQUERY);    fd_set read_set, ready_set;  // for select()    if(argc != 4)    {        printf("usage: %s <server_name> <server_port_number> <p2p_port_number>\n", argv[0]);        exit(1);    }    host = argv[1];    port = atoi(argv[2]);    myport = atoi(argv[3]);    filelist = fopen("./peerlist", "r");    if (filelist == NULL)    {        printf("Error:can't open the peerlist.\n");        exit(1);    }    /* Get the domain name of itself from peerlist*/    char *temp = getLocalIP();    localhost = (char *)malloc(strlen(temp)+1);    strcpy(localhost,temp);    /* Register the local file entries to the indexing server。 */    clientfd = open_clientfd(host, port);    rio_readinitb(&rio, clientfd);    rio_writen(clientfd, "REGISTER\n", 9);    /* register the files one by one     * The format store in the peerlist is like: A_NICE_DAY localhost:./a.cpp     * A_NICE_DAY is the key words, including:a, nice, day     * localhost is the domain name     * ./a.cpp is the filename     */    while (fgets(buf, MAXLINE, filelist) != NULL)        {        if ((token = strchr(buf, ':')) != NULL)        {            token[0] = ':';              token[1] = '\0';                        strcat(buf, localhost);            rio_writen(clientfd, buf, strlen(buf));            rio_writen(clientfd, ":", 1);            rio_writen(clientfd, argv[3], strlen(argv[3]));            rio_writen(clientfd, "\n", 1);        }            }    rio_writen(clientfd, ".\n", 2);    /* End register */       fclose(filelist);    /* Get the success info from server */    while(rio_readlineb(&rio, buf, MAXLINE))    {        if (strcmp(buf, "SUCCESS\n") == 0)             break;                    }    close(clientfd);        printf("Register to the indexing server successfully.\n");       prompt = "PPP>";       get = FALSE;        /* Prepare for the select() */    listenfd = open_listenfd(myport);    FD_ZERO(&read_set);    FD_SET(STDIN_FILENO, &read_set);    FD_SET(listenfd, &read_set);    printf("Welcome to the peer-to-peer client!\n");    printf("Please input the key words you want to search.\n");    printf("Then input 'GET index' to get the files you want.(index=0,1,2)\n");    printf("If you want more than one file,please input like ""GET 0 1 2"".\n");    printf("Finally, input quit or exit to leave.\n");    while (1)     {        printf("%s", prompt);        fflush(stdout);        ready_set = read_set;        select(listenfd+1, &ready_set, NULL, NULL, NULL);        // The standard input is ready.        if (FD_ISSET(STDIN_FILENO, &ready_set))        {            if(fgets(buf, MAXLINE, stdin) != NULL)            {                // GET Command                if (!(strncmp("GET", buf, 3)))                {                    if (!get)                    {                        printf("Sorry, please do the query first.\n");                    }                    else                    {                        size_t n;                         char *filelist;                        char *y;                        char *savept;                        char *portstr;                        int index;                        int filefd;                        /* deal with GET 0 1 2 ...*/                        filelist = (char *)malloc(strlen(buf)+1);                        strcpy(filelist, buf);                        // ignore "GET"                        if((y=(char *)strtok_r(filelist," \t",&savept))!=NULL)                        {                            filelist = savept;                        }                        while((y=(char *)strtok_r(filelist," \t",&savept))!=NULL)                        {                            filelist = savept;                            index = atoi(y);                            size_t n;                             char *token, *token1;                               /*                              * Get file keys, file host,file port from queryresult[x]                              * It is like: key_keys localhost 20002                             */                            token = strchr(queryresult[index], ':');                            token[0] = '\0';                                    token++;                            token1 = strchr(token, ':');                            token1[0] = '\0';                                    token1++;                            token1[strlen(token1)-1] = '\0';                              if ((!strcmp(token,localhost))&&(atoi(token1)==myport))                            {                                printf("Sorry.The file of the search result is ");                                printf("from yourself. It already exists. ");                                printf("You needn't download it.\n");                            }                            else                            {                                // Connect to remote file server                                filefd = open_clientfd(token, atoi(token1));                                rio_readinitb(&rio, filefd);                                char buffer1[MAXLINE];                                char filename[MAXLINE];                                // Send to server the file title                                rio_writen(filefd, queryresult[index],                                       strlen(queryresult[index]));                                                   rio_writen(filefd,"\n",1);                                // Get the file name from server                                rio_readlineb(&rio, filename, MAXLINE);                                filename[strlen(filename)-1] = '\0';                                int fd;                                if ((fd=creat(filename,0666)) < 0)                                {                                    printf("Error:failed to create file %s\n", filename);                                    close(filefd);                                    continue;                                }                                                                // Get the file body from server and                                // write to the file newly created                                while(rio_readlineb(&rio, buffer1, MAXLINE)!=0)                                 {                                       if (!strcmp(buffer1,".\n"))                                                                     break;                                    write(fd, buffer1, strlen(buffer1));                                                                    fflush(stdout);                                }                                close(filefd);                                                                // Add file entry to the indexing server                                add_entry(host, port, queryresult[index]);                                // add file entry to local peerlist                                add_myfile(queryresult[index], filename);                                printf("%d) file:%s retrieved from remote server.\n",                                    index, filename);                                                               fflush(stdout);                            }                        }                                                   get = FALSE;                                            }                }                else if (!(strncmp("quit", buf, 4)))                {                                        deregister(host, port);                    printf("The program exits.\n");                    exit(0);                }                else if (!(strncmp("exit", buf, 4)))                {                                       deregister(host, port);                    printf("The program exits.\n");                    exit(0);                }                else                {                    /* Do the query */                    get = TRUE;                    /* Connect to the indexing server */                    clientfd = open_clientfd(host, port);                    rio_readinitb(&rio, clientfd);                    rio_writen(clientfd, "QUERY\n", 6);                    rio_writen(clientfd, buf, strlen(buf));                    rio_writen(clientfd, ".\n", 3);                    printf("Query matches the following:\n\n");                       fflush(stdout);                    while(rio_readlineb(&rio, buf, MAXLINE))                    {                        if (strcmp(buf, "QUERY\n") == 0)                         {                              continue;                        }                        if (strcmp(buf, "SUCCESS\n") == 0)                         {                            printf("\nWhich one do you wish to download?\n");                            fflush(stdout);                            break;                        }                        if (strcmp(buf, "FAILED\n") == 0)                         {                            printf("\nSorry, No file matches your key words.\n");                            fflush(stdout);                            get = FALSE;                            break;                        }                        else                        {                               int k;                            int theSame = FALSE;                            for (k = 0; k < querycount; k++)                            {                                if (!strcmp(queryresult[k], buf))                                {                                    theSame = TRUE;                                }                            }                            if (!theSame)                            {                                // Store the query result for GET command                                queryresult[querycount] = (char *)malloc(strlen(buf)+1);                                strcpy(queryresult[querycount], buf);                                printf("%d) %s", querycount, queryresult[querycount]);                                fflush(stdout);                                querycount++;                                  }                            }                    }                    querycount = 0;                    close(clientfd);                                 }            }        }        /* The socket is ready */        if (FD_ISSET(listenfd, &ready_set))        {            int clientlen, connfd;            struct sockaddr_in clientaddr;            int i;            clientlen = sizeof(clientaddr);            connfd = accept(listenfd, (SA *)&clientaddr, &clientlen);                        printf("A client wants to download files from me.\n");            fflush(stdout);                size_t n;             char buffer[MAXLINE],buffer1[MAXLINE];             rio_t rio0,rio1;            int j;            int srcfd;            char* filebuffer;            struct stat sbuf;            char holdbuffer[MAXLINE];

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区欧美日韩| 成人av在线网| 国产资源精品在线观看| jizz一区二区| 日韩精品一区二区三区四区 | 亚洲国产精品精华液网站| 美女精品一区二区| 一本一道久久a久久精品综合蜜臀| 日韩三级电影网址| 一区二区在线观看视频| 福利视频网站一区二区三区| 这里是久久伊人| 亚洲精品国产a久久久久久| 精品一区二区影视| 制服丝袜国产精品| 亚洲国产另类av| 色婷婷精品大视频在线蜜桃视频| 国产精品私人影院| 亚洲一区二区四区蜜桃| 成人免费高清视频在线观看| 欧美变态tickle挠乳网站| 洋洋av久久久久久久一区| jlzzjlzz国产精品久久| 亚洲国产精品成人综合| 久久激情五月婷婷| 正在播放一区二区| 首页综合国产亚洲丝袜| 欧洲国内综合视频| 亚洲欧美激情一区二区| 99国产欧美久久久精品| 国产精品不卡一区| www.在线成人| 国产精品久久久久永久免费观看| 国产精品99精品久久免费| 久久久精品国产免大香伊| 国内精品嫩模私拍在线| 欧美成人欧美edvon| 久久精品国产亚洲高清剧情介绍 | 国产欧美精品一区| 国产香蕉久久精品综合网| 日韩高清在线一区| 91精品婷婷国产综合久久性色 | 91精品久久久久久久91蜜桃| 亚洲成在线观看| 色先锋aa成人| 亚洲一区二区在线播放相泽| 欧美日本一道本在线视频| 亚洲va欧美va人人爽| 欧美二区三区的天堂| 免费高清在线一区| 2019国产精品| 99久久精品一区二区| 亚洲一区二区在线播放相泽| 91麻豆精品国产91久久久久久| 日韩成人免费电影| 99re成人在线| 亚洲女同ⅹxx女同tv| 欧美少妇xxx| 美女脱光内衣内裤视频久久影院| 欧美videos大乳护士334| 国产精品夜夜嗨| 亚洲桃色在线一区| 欧美日本高清视频在线观看| 免费成人美女在线观看| 欧美国产精品久久| 欧美亚洲综合色| 国内精品久久久久影院薰衣草 | 国产精品中文欧美| 中文字幕第一区二区| 色视频欧美一区二区三区| 日本色综合中文字幕| 国产精品网站在线观看| 欧美在线观看一二区| 亚洲精品国产成人久久av盗摄| 91论坛在线播放| 美女性感视频久久| 亚洲天堂免费在线观看视频| 欧美精品粉嫩高潮一区二区| 懂色av中文字幕一区二区三区| 亚洲一区二区视频在线观看| 久久天天做天天爱综合色| 色欧美片视频在线观看在线视频| 老司机精品视频一区二区三区| 最新成人av在线| bt欧美亚洲午夜电影天堂| 日韩国产精品久久久| 日韩一区中文字幕| 日韩一区二区三免费高清| 97成人超碰视| 国产福利91精品一区| 天涯成人国产亚洲精品一区av| 亚洲国产岛国毛片在线| 日韩三级.com| 欧美久久高跟鞋激| 色综合中文综合网| 欧美日本一道本| 99国产精品国产精品毛片| 毛片av一区二区| 亚洲一区二区黄色| 秋霞成人午夜伦在线观看| 国产精品成人网| 国产欧美一区二区在线| 精品福利在线导航| 日韩欧美中文字幕精品| 欧美理论片在线| 欧美亚一区二区| 91久久国产综合久久| www.成人网.com| 国产aⅴ综合色| 国产精品资源在线观看| 精品一区二区三区免费视频| 日韩电影在线免费| 日产国产高清一区二区三区| 午夜精品久久久久久久99樱桃| 亚洲精选视频在线| 亚洲久本草在线中文字幕| 亚洲三级在线免费观看| 一区二区中文视频| 最新日韩av在线| 亚洲免费观看高清完整版在线观看 | 欧洲人成人精品| 在线一区二区三区四区五区 | 国产老女人精品毛片久久| 国内外精品视频| 国产69精品一区二区亚洲孕妇 | 蜜桃视频在线一区| 免费在线观看精品| 久久av中文字幕片| 日本高清不卡视频| 极品少妇一区二区| 热久久久久久久| 色综合久久精品| 91社区在线播放| 欧美三级日本三级少妇99| 欧美三级电影网站| 91麻豆精品国产91久久久使用方法| 欧美精选在线播放| 亚洲精品一区二区三区蜜桃下载| 久久久久免费观看| 日韩一区中文字幕| 首页综合国产亚洲丝袜| 精品在线一区二区三区| 懂色av中文一区二区三区| 91美女精品福利| 欧美人妖巨大在线| 久久久久国产精品厨房| 国产精品国产三级国产普通话蜜臀| 亚洲精品日韩一| 蜜桃视频一区二区| 成人伦理片在线| 欧美日韩精品一二三区| 2021中文字幕一区亚洲| 欧美在线高清视频| 日韩久久精品一区| 自拍偷自拍亚洲精品播放| 日韩高清一区二区| 国产精品一区二区无线| 在线一区二区三区四区五区| 精品国产91洋老外米糕| 一区二区三区日韩在线观看| 麻豆国产欧美一区二区三区| 99精品欧美一区| 欧美一区二区国产| 亚洲视频每日更新| 精品综合免费视频观看| 欧美图区在线视频| 日本一区二区三区国色天香| 三级在线观看一区二区| 91污在线观看| 久久综合九色综合欧美就去吻 | 国产精品原创巨作av| 欧美综合色免费| 国产精品欧美一区喷水| 美女视频网站黄色亚洲| 一本色道久久综合亚洲91| 精品99一区二区| 日韩成人一级片| 色婷婷国产精品综合在线观看| 久久久精品tv| 久久国产婷婷国产香蕉| 欧美亚洲高清一区| 亚洲欧美日韩国产综合在线| 丁香婷婷深情五月亚洲| 久久亚洲一区二区三区四区| 日韩电影一区二区三区四区| 国产精品视频观看| 国产精品视频免费| 精品影院一区二区久久久| 欧美系列亚洲系列| 亚洲免费成人av| 欧美三级视频在线观看| 亚洲色图视频网站| 丁香桃色午夜亚洲一区二区三区| 精品国产网站在线观看| 毛片一区二区三区| 日韩亚洲欧美在线观看| 日本三级韩国三级欧美三级| 欧美精品在欧美一区二区少妇| 亚洲精品成a人| 91精品1区2区|