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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? clientserver.html

?? Beej的socket教材
?? HTML
?? 第 1 頁 / 共 2 頁
字號:
<HTML><HEAD><TITLE>Client-Server Background</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.70"><LINKREL="HOME"TITLE="Beej's Guide to Network Programming"HREF="index.html"><LINKREL="PREVIOUS"TITLE="System Calls or Bust"HREF="syscalls.html"><LINKREL="NEXT"TITLE="Slightly Advanced Techniques"HREF="advanced.html"><METAHTTP-EQUIV="Content-Type"CONTENT="text/html; charset=utf-8"></HEAD><BODYCLASS="sect1"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#0000FF"VLINK="#840084"ALINK="#0000FF"><DIVCLASS="NAVHEADER"><TABLESUMMARY="Header navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><THCOLSPAN="3"ALIGN="center">Beej's Guide to Network Programming</TH></TR><TR><TDWIDTH="10%"ALIGN="left"VALIGN="bottom"><AHREF="syscalls.html">Prev</A></TD><TDWIDTH="80%"ALIGN="center"VALIGN="bottom"></TD><TDWIDTH="10%"ALIGN="right"VALIGN="bottom"><AHREF="advanced.html">Next</A></TD></TR></TABLE><HRALIGN="LEFT"WIDTH="100%"></DIV><DIVCLASS="sect1"><H1CLASS="sect1"><ANAME="clientserver">5. Client-Server Background</A></H1><P>It's a client-server world, baby.  Just about everything on thenetwork deals with client processes talking to server processes andvice-versa.  Take <BCLASS="command">telnet</B>, for instance.  When youconnect to a remote host on port 23 with telnet (the client), a programon that host (called <BCLASS="command">telnetd</B>, the server) springs tolife.  It handles the incoming telnet connection, sets you up with alogin prompt, etc.</P><DIVCLASS="figure"><ANAME="figure2"></A><P><B>Figure 2. Client-Server Interaction.</B></P><DIVCLASS="mediaobject"><P><IMGSRC="cs.gif"ALT="[Client-Server Interaction Diagram]"></IMG></P></DIV></DIV><P>The exchange of information between client and server issummarized in <AHREF="clientserver.html#figure2">Figure 2</A>.</P><P>Note that the client-server pair can speak<TTCLASS="constant">SOCK_STREAM</TT>, <TTCLASS="constant">SOCK_DGRAM</TT>, oranything else (as long as they're speaking the same thing.)  Some goodexamples of client-server pairs are<BCLASS="command">telnet</B>/<BCLASS="command">telnetd</B>,<BCLASS="command">ftp</B>/<BCLASS="command">ftpd</B>, or<BCLASS="command">bootp</B>/<BCLASS="command">bootpd</B>.  Every time you use<BCLASS="command">ftp</B>, there's a remote program,<BCLASS="command">ftpd</B>, that serves you.</P><P>Often, there will only be one server on a machine, and that serverwill handle multiple clients using <TTCLASS="function">fork()</TT>.  Thebasic routine is: server will wait for a connection,<TTCLASS="function">accept()</TT> it, and <TTCLASS="function">fork()</TT> achild process to handle it.  This is what our sample server does in thenext section.</P><DIVCLASS="sect2"><H2CLASS="sect2"><ANAME="simpleserver">5.1. A Simple Stream Server</A></H2><P>All this server does is send the string "<TTCLASS="computeroutput">Hello,World!\n</TT>" out over a stream connection.  All you needto do to test this server is run it in one window, and telnet to it fromanother with:</P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="screen">&#13;    <TTCLASS="prompt">$</TT> <BCLASS="command">telnet remotehostname 3490</B></PRE></TD></TR></TABLE><P>where <TTCLASS="computeroutput">remotehostname</TT> is the nameof the machine you're running it on.</P><P><AHREF="http://www.ecst.csuchico.edu/~beej/guide/net/examples/server.c"TARGET="_top">The server code</A>: (Note: atrailing backslash on a line means that the line is continued on thenext.)</P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="programlisting">&#13;    /*    ** server.c -- a stream socket server demo    */    #include &#60;stdio.h&#62;    #include &#60;stdlib.h&#62;    #include &#60;unistd.h&#62;    #include &#60;errno.h&#62;    #include &#60;string.h&#62;    #include &#60;sys/types.h&#62;    #include &#60;sys/socket.h&#62;    #include &#60;netinet/in.h&#62;    #include &#60;arpa/inet.h&#62;    #include &#60;sys/wait.h&#62;    #include &#60;signal.h&#62;    #define MYPORT 3490    // the port users will be connecting to    #define BACKLOG 10     // how many pending connections queue will hold    void sigchld_handler(int s)    {        while(wait(NULL) &#62; 0);    }    int main(void)    {        int sockfd, new_fd;  // listen on sock_fd, new connection on new_fd        struct sockaddr_in my_addr;    // my address information        struct sockaddr_in their_addr; // connector's address information        int sin_size;        struct sigaction sa;        int yes=1;        if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {            perror("socket");            exit(1);        }        if (setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&#38;yes,sizeof(int)) == -1) {            perror("setsockopt");            exit(1);        }                my_addr.sin_family = AF_INET;         // host byte order        my_addr.sin_port = htons(MYPORT);     // short, network byte order        my_addr.sin_addr.s_addr = INADDR_ANY; // automatically fill with my IP        memset(&#38;(my_addr.sin_zero), '\0', 8); // zero the rest of the struct        if (bind(sockfd, (struct sockaddr *)&#38;my_addr, sizeof(struct sockaddr))                                                                       == -1) {            perror("bind");            exit(1);        }        if (listen(sockfd, BACKLOG) == -1) {            perror("listen");            exit(1);        }        sa.sa_handler = sigchld_handler; // reap all dead processes        sigemptyset(&#38;sa.sa_mask);        sa.sa_flags = SA_RESTART;        if (sigaction(SIGCHLD, &#38;sa, NULL) == -1) {            perror("sigaction");            exit(1);        }        while(1) {  // main accept() loop            sin_size = sizeof(struct sockaddr_in);            if ((new_fd = accept(sockfd, (struct sockaddr *)&#38;their_addr,                                                           &#38;sin_size)) == -1) {                perror("accept");                continue;            }            printf("server: got connection from %s\n",                                               inet_ntoa(their_addr.sin_addr));            if (!fork()) { // this is the child process                close(sockfd); // child doesn't need the listener                if (send(new_fd, "Hello, world!\n", 14, 0) == -1)                    perror("send");                close(new_fd);                exit(0);            }            close(new_fd);  // parent doesn't need this        }        return 0;    } </PRE></TD></TR></TABLE><P>In case you're curious, I have the code in one big<TTCLASS="function">main()</TT> function for (I feel) syntactic clarity.Feel free to split it into smaller functions if it makes you feelbetter.</P><P>(Also, this whole <TTCLASS="function">sigaction()</TT> thing might benew to you--that's ok.  The code that's there is responsible for reapingzombie processes that appear as the <TTCLASS="function">fork()</TT>ed childprocesses exit.  If you make lots of zombies and don't reap them, yoursystem administrator will become agitated.)</P><P>You can get the data from this server by using the clientlisted in the next section.</P></DIV><DIVCLASS="sect2"><H2CLASS="sect2"><ANAME="simpleclient">5.2. A Simple Stream Client</A></H2><P>This guy's even easier than the server.  All this client does isconnect to the host you specify on the command line, port 3490.  It getsthe string that the server sends.</P><P><AHREF="http://www.ecst.csuchico.edu/~beej/guide/net/examples/client.c"TARGET="_top">The clientsource</A>:</P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="programlisting">&#13;    /*    ** client.c -- a stream socket client demo    */    #include &#60;stdio.h&#62;    #include &#60;stdlib.h&#62;    #include &#60;unistd.h&#62;    #include &#60;errno.h&#62;    #include &#60;string.h&#62;    #include &#60;netdb.h&#62;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区久久久| 99国产精品久| 午夜精品久久久| 亚洲一区在线看| 亚洲精品va在线观看| 中文字幕一区在线观看| 国产精品二三区| 国产精品不卡在线| 亚洲人xxxx| 夜夜嗨av一区二区三区四季av | 韩国精品主播一区二区在线观看 | 久久亚洲二区三区| 2017欧美狠狠色| 久久久久国产成人精品亚洲午夜| 欧美va亚洲va香蕉在线| 久久综合九色综合97_久久久| 久久久精品tv| 亚洲视频综合在线| 亚洲综合区在线| 欧美aⅴ一区二区三区视频| 日韩国产欧美在线播放| 激情丁香综合五月| 成人免费视频网站在线观看| 99久久777色| 欧美日韩免费电影| 精品国产亚洲在线| 中文字幕日本乱码精品影院| 一区二区三区在线视频观看58| 性感美女久久精品| 国内精品伊人久久久久av一坑| 成人永久看片免费视频天堂| 91免费在线看| 日韩视频永久免费| 国产精品乱码人人做人人爱| 亚洲午夜日本在线观看| 精品一区二区三区久久久| 国产美女在线观看一区| 91久久一区二区| 日韩精品中文字幕在线一区| 亚洲欧洲精品一区二区三区| 视频在线观看国产精品| 国产91在线看| 337p亚洲精品色噜噜噜| 国产日韩欧美精品综合| 日韩国产欧美视频| 9人人澡人人爽人人精品| 日韩丝袜情趣美女图片| 樱花影视一区二区| 国产成人日日夜夜| 欧美日韩国产首页在线观看| 国产欧美一区二区精品性色| 日本特黄久久久高潮| 91日韩一区二区三区| 久久中文娱乐网| 日韩成人av影视| 99久久精品国产一区二区三区| 精品国产第一区二区三区观看体验| 一区二区久久久久| 国产69精品久久777的优势| 欧美妇女性影城| 一区二区三区在线视频观看| 国产成人亚洲综合a∨婷婷图片 | 国产亚洲欧洲一区高清在线观看| 亚洲国产欧美在线人成| 97精品超碰一区二区三区| 久久久久久97三级| 国产一区二区网址| 精品国产电影一区二区| 日本va欧美va精品| 91精品麻豆日日躁夜夜躁| 亚洲一区二区欧美日韩| 91浏览器在线视频| 制服丝袜亚洲播放| 日日夜夜精品免费视频| 中文字幕一区不卡| 国模套图日韩精品一区二区| 欧美日韩视频在线一区二区| 亚洲美女精品一区| 在线观看一区二区精品视频| 国产精品国产三级国产普通话蜜臀| 国产一区二区三区在线观看免费视频| 日韩欧美精品在线| 日本不卡的三区四区五区| 欧美日韩精品一区二区天天拍小说| 一区二区三区免费| 欧美日韩国产大片| 亚洲高清不卡在线| 91精品国产91久久久久久最新毛片| 图片区小说区区亚洲影院| 欧美久久久久久久久| 日韩不卡一区二区三区| 日韩欧美成人激情| 国产美女在线精品| 亚洲天堂久久久久久久| 欧美无砖专区一中文字| 日韩精品视频网站| 亚洲精品一区二区三区蜜桃下载 | av一区二区久久| 国产亚洲一区二区三区| 国产成人精品网址| 国产精品美女视频| 在线亚洲一区观看| 丝袜美腿一区二区三区| 精品国产一区二区国模嫣然| 成人app网站| 五月综合激情网| 久久久久久黄色| 日本高清视频一区二区| 毛片av一区二区| 国产精品午夜在线| 欧美高清视频一二三区| 国产精品一区二区三区99| 亚洲视频在线一区观看| 久久精品国产一区二区三| 欧洲人成人精品| 日产欧产美韩系列久久99| 亚洲国产精品激情在线观看| 欧美性淫爽ww久久久久无| 麻豆精品国产91久久久久久| 亚洲天天做日日做天天谢日日欢| 91精品国产91久久久久久一区二区 | av爱爱亚洲一区| 日本欧美一区二区三区乱码| 日韩一区在线看| 2022国产精品视频| 欧美日韩一区视频| 99久久综合狠狠综合久久| 免费成人美女在线观看.| 亚洲裸体在线观看| 26uuuu精品一区二区| 日韩美女久久久| 婷婷丁香久久五月婷婷| 欧美一二区视频| 国产suv精品一区二区6| 一区二区三区在线视频观看58| 日韩你懂的电影在线观看| 成人短视频下载| 国产99久久久国产精品免费看| 亚洲一二三区在线观看| 国产网站一区二区三区| 欧美日韩中文字幕一区| 亚洲高清免费观看| 伊人色综合久久天天| 亚洲精品在线观| 欧美三片在线视频观看| 国产·精品毛片| 毛片av中文字幕一区二区| 一区二区三区四区精品在线视频| 欧美精品一区二区三区四区| 欧美综合天天夜夜久久| 捆绑紧缚一区二区三区视频| 久久精品免费看| 99在线精品一区二区三区| 亚洲欧美一区二区久久| 精品国产91洋老外米糕| 91精品国产综合久久精品app| 99国产欧美另类久久久精品| 日韩精品一区第一页| 天天操天天色综合| 亚洲男同1069视频| 国产精品视频一区二区三区不卡| 欧美疯狂性受xxxxx喷水图片| 欧美日韩你懂得| 欧亚洲嫩模精品一区三区| 91在线视频播放| 99久久夜色精品国产网站| av一二三不卡影片| av电影在线不卡| av网站一区二区三区| 成人av电影在线观看| 国产成人综合网站| 91美女在线观看| 色婷婷av一区二区三区大白胸| 99热精品国产| 99这里只有久久精品视频| 欧美午夜免费电影| 7878成人国产在线观看| 在线不卡一区二区| 欧美日韩久久久一区| 久久久精品黄色| 国产精品福利电影一区二区三区四区| 欧美经典三级视频一区二区三区| 久久久精品免费网站| 国产精品毛片a∨一区二区三区| 中文久久乱码一区二区| 中文字幕五月欧美| 中文字幕一区日韩精品欧美| 午夜久久久久久久久 | 一区二区三区四区视频精品免费| 国产精品家庭影院| 亚洲精品一二三区| 激情五月婷婷综合网| 成人精品国产福利| 在线视频国内一区二区| 欧洲一区二区三区免费视频| 久久精品一区二区三区不卡牛牛 | 日本一区二区成人| 综合在线观看色| 日本不卡在线视频| 国产91精品在线观看|