• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Onway

            我是一只菜菜菜菜鳥(niǎo)...
            posts - 61, comments - 56, trackbacks - 0, articles - 34
            其實(shí)在瀏覽器看到是正常的,但是通過(guò)goldendict訪(fǎng)問(wèn)就不行了,主要表現(xiàn)是導(dǎo)航條工作不正常,不能隱藏,和頁(yè)面底下出現(xiàn)的一大片空白。如圖:
             




            /Files/Onway/eyoudao-web.tar.gz.rar


            gyd-server.c
            #include <sys/types.h>
            #include 
            <sys/socket.h>
            #include 
            <sys/stat.h>
            #include 
            <unistd.h>
            #include 
            <stdio.h>
            #include 
            <stdlib.h>
            #include 
            <string.h>
            #include 
            <arpa/inet.h>
            #include 
            <fcntl.h>
            #include 
            <pthread.h>

            #define PROT 10000
            #define ADDRESS "127.0.0.1"
            #define BACKLOG 20
            #define BUFSIZE 4096

            /*    互斥量,用于各個(gè)線(xiàn)程的標(biāo)準(zhǔn)輸出    */
            pthread_mutex_t 
            lock = PTHREAD_MUTEX_INITIALIZER;
            struct clientinfo
            {
                
            int sockfd;    /*    客戶(hù)端套接字    */
                
            int sockno;    /*    客戶(hù)端請(qǐng)求順序號(hào)    */
            };

            int create_server_socket();
            void* handle_request(void*);
            int send_dynamic(struct clientinfo*,char*);    /*    通過(guò)dynamic.bash返回的結(jié)果    */
            int send_static(struct clientinfo*,char*);    /*    直接讀文件發(fā)送    */
            void print_msg(int,const char*);            /*    標(biāo)準(zhǔn)輸出    */


            int
            main(
            int argc,char *argv[])
            {
                
            int serverfd;
                
            int count = 0;
                pthread_t ptid;
                
            struct clientinfo *cinfo;

                
            /*    創(chuàng)建監(jiān)聽(tīng)套接字    */
                serverfd 
            = create_server_socket();
                
            if (serverfd == -1) {
                    printf(
            "main(): terminate\n");
                    
            return -1;
                }

                
            while (1) {
                    cinfo 
            = (struct clientinfo*) malloc (sizeof(struct clientinfo));
                    cinfo
            ->sockfd = accept(serverfd,NULL,NULL);
                    cinfo
            ->sockno = ++count;
                    pthread_create(
            &ptid,NULL,handle_request,(void*)cinfo);
                }

                
            return 0;
            }

            int 
            create_server_socket()
            {
                
            int tmpfd = socket(AF_INET,SOCK_STREAM,0);
                
            if (tmpfd == -1) {
                    printf(
            "create_server_socket(): socket error\n");
                    
            return -1;
                }

                
            struct sockaddr_in svraddr;
                bzero(
            &svraddr,sizeof(svraddr));
                svraddr.sin_family 
            = AF_INET;
                svraddr.sin_port 
            = htons(PROT);
                svraddr.sin_addr.s_addr 
            = inet_addr(ADDRESS);

                
            if (bind(tmpfd,(struct sockaddr*)&svraddr,sizeof(svraddr)) == -1) {
                    printf(
            "create_server_socket(): bind error\n");
                    
            return -1;
                }

                
            if (listen(tmpfd,BACKLOG) == -1) {
                    printf(
            "create_server_socket(): listen error\n");
                    
            return -1;
                }
                
                
            return tmpfd;
            }

            void*
            handle_request(
            void *info)
            {
                
            struct clientinfo *cinfo = (struct clientinfo*) info;
                
            char receive[BUFSIZE << 1= "";
                
            char method[BUFSIZE] = "",request[BUFSIZE] = "";
                
            char header[] = "HTTP/1.1 200 OK\r\nconnection:close\r\n\r\n";
                
            int i;

                
            if (recv(cinfo->sockfd,receive,BUFSIZE << 1,0< 0) {
                    print_msg(cinfo
            ->sockno,"handle_request(): recv error");
                    
            return ( (void*0);
                }
                
            /*    回應(yīng)報(bào)頭    */
                write(cinfo
            ->sockfd,header,strlen(header));

                
            /*    請(qǐng)求方法和參數(shù)的簡(jiǎn)單檢測(cè)    */
                sscanf(receive,
            "%s%s",method,request);
                
            if (strcmp(method,"GET")) {
                    print_msg(cinfo
            ->sockno,"handle_request(): method is not GET");
                    
            return ( (void*0);
                }

                
            if (strlen(request) < 8) {
                    print_msg(cinfo
            ->sockno,"handle_request(): unknow request");
                    
            goto end;
                }
                print_msg(cinfo
            ->sockno,receive);

                
            /*    請(qǐng)求dynamic.bash    */
                
            if (strncmp(request,"/action?",8== 0) {
                    send_dynamic(cinfo,request);
                    
            goto end;
                }
                send_static(cinfo,request);

            end:
                close(cinfo
            ->sockfd);
                free(cinfo);
                
            return ( (void*0);
            }

            int
            send_static(
            struct clientinfo *cinfo,char *request)
            {
                
            int len = strlen(request);
                
            char path[1024],buf[BUFSIZE];
                
            int fd,bytes;
                
            /*    忽略開(kāi)頭的'/'符號(hào)    */
                sscanf(request,
            "%*c%s",path);
                
                
            /*    文件讀取    */
                fd 
            = open(path,O_RDONLY);
                
            if (fd == -1) {
                    print_msg(cinfo
            ->sockno,"send_static(): open error");
                    
            return 1;
                }
                
            while ((bytes = read(fd,buf,4096)) > 0) {
                    write(cinfo
            ->sockfd,buf,bytes);
                }
                close(fd);
                
            return 0;
            }

            int
            send_dynamic(
            struct clientinfo *cinfo,char *request)
            {
                
            char cmd[BUFSIZE],arg[1024],line[BUFSIZE];
                FILE 
            *fpin;
                
            /*    忽略action?    */
                sscanf(request,
            "%*[^?]%*c%s",arg);
                sprintf(cmd,
            "./dynamic.bash \"%s\"",arg);

                
            /*    從popen返回的FILE指針讀取內(nèi)容發(fā)送    */
                
            int cnt = 0;
                
            if ((fpin = popen(cmd,"r")) == NULL) {
                    print_msg(cinfo
            ->sockno,"send_dynamic(): popen error");
                    
            return 1;
                }
                
            while (fgets(line,BUFSIZE,fpin) != NULL) {
                    write(cinfo
            ->sockfd,line,strlen(line));
                }
                pclose(fpin);
                
            return 0;
            }

            void
            print_msg(
            int no,const char *msg)
            {
                pthread_mutex_lock(
            &lock);
                printf(
            "request: %d\n%s\n\n",no,msg);
                pthread_mutex_unlock(
            &lock);
            }

            dynamic.bash
            #!/bin/bash

            xmldetail
            ="http://dict.youdao.com/search?keyfrom=deskdict.main&xmlDetail=true&doctype=xml&xmlVersion=7.1&dogVersion=1.0&client=deskdict&appVer=5.0.32.4695&xslVer=3.0&q="
            xsldetail
            ="detail/result.xsl"
            xmlsimple
            =""
            xslsimple
            =""

            check_in_book() {
                # 截?cái)嚅_(kāi)頭結(jié)尾的空格,將中間的連續(xù)空格換成一個(gè)空格
                word
            ="`echo $1 | sed 's/^\(%20\)\+//g' | sed 's/\(%20\)\+$//g' | sed 's/\(%20\)\+/ /g'`"
                cut 
            -';' -1 wordsbook | grep -"^$word$"
                [ $
            ? == 0 ] && echo 1 || echo 0
            }

            add_to_book() {
                word
            ="`echo $1 | sed 's/^\(%20\)\+//g' | sed 's/\(%20\)\+$//g' | sed 's/\(%20\)\+/ /g'`"
                t
            ="`date +'%y-%m-%d %H:%M'`"
                echo 
            "$word;$t;" >> wordsbook
                echo 
            1
            }

            send_response() {
                # $1為:inbook
            =queryword或者detail=queryword等形式
            action
            =${1%=*}
            target
            =${1#*=}

            case $action in
                
            "inbook")
                    check_in_book 
            "$target"
                    ;;
                
            "tobook")
                    add_to_book 
            "$target"
                    ;;
                
            "detail")
                    .
            /xslt "-xmlapi" "$xmldetail" "-xslapi" "$xsldetail" "-keyword" "$target" | sed '$d' 
                    ;;
                
            "simple")
                    ;;
                
            *)
                    exit 
            1
                    ;;
            esac
            }

            send_response 
            "$1"
            exit 
            0
            免费精品国产日韩热久久| 精品久久久久久无码专区不卡| 久久香蕉国产线看观看乱码| 国内精品久久久久久麻豆| 午夜精品久久久久久| 久久亚洲国产成人精品性色| 久久久精品国产亚洲成人满18免费网站| 久久久久久无码国产精品中文字幕| 九九精品久久久久久噜噜| 狠狠狠色丁香婷婷综合久久俺| 亚洲国产精品综合久久一线| 久久99精品久久久久婷婷| 欧美精品丝袜久久久中文字幕 | 精品国产91久久久久久久| 亚洲精品美女久久久久99小说| 久久国产精品-久久精品| 亚洲国产成人精品女人久久久 | 性高湖久久久久久久久AAAAA| 国产麻豆精品久久一二三| 一本色综合久久| 91精品国产91久久久久久| 国产精品中文久久久久久久| 国产精品成人无码久久久久久| 国产精品美女久久久久久2018| 久久国产精品无| 久久久久久噜噜精品免费直播| 国产午夜精品理论片久久| 国产国产成人精品久久| 久久er99热精品一区二区| 久久精品国产乱子伦| 狠狠色丁香久久婷婷综合| 一本一本久久aa综合精品| 久久九九久精品国产免费直播| 一本久久a久久精品综合香蕉| 久久播电影网| 久久人人爽人人澡人人高潮AV| 亚洲午夜精品久久久久久人妖| 91久久精品国产成人久久| 日本福利片国产午夜久久| 精品综合久久久久久88小说 | 精品久久久久久中文字幕大豆网 |