Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 15 kết quả

Đề tài: socket ( sys/socket.h) và GET (sau khi telnet + tên host)

  1. #1
    Ngày gia nhập
    07 2011
    Bài viết
    38

    Mặc định socket ( sys/socket.h) và GET (sau khi telnet + tên host)

    Chào các bác, em đang làm bài tập viết chương trình đọc rss của trang web bất kỳ ( hoặc đa số )
    Thực mà nói thì trước lúc nhận cái bài tập này thì em hoàn toàn ko có bất kỳ khái niệm cơ bản nào về mạng rồi cũng như các vấn đề liên quan khác (ko biết vấn đề thế gọi là gì lun ). Tuy nhiên trên lý thuyết thì là em cần 1 code chạy nhận tham số = host adress hoặc là direct link đến cái trang rss rồi tải file .xml về. Sau khi xem trên mạng thì em tìm đc cái code client như sau:
    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <unistd.h>
    4. #include <string.h>
    5. #include <sys/types.h>
    6. #include <sys/socket.h>
    7. #include <netinet/in.h>
    8. #include <netdb.h>
    9.  
    10. void error(const char *msg)
    11. {
    12.     perror(msg);
    13.     exit(0);
    14. }
    15.  
    16. int main(int argc, char *argv[])
    17. {
    18.     int sockfd, portno, n;
    19.     struct sockaddr_in serv_addr;
    20.     struct hostent *server;
    21.  
    22.     char buffer[256];
    23.     if (argc < 3) {
    24.        fprintf(stderr,"usage %s hostname port\n", argv[0]);
    25.        exit(0);
    26.     }
    27.     portno = atoi(argv[2]);
    28.     sockfd = socket(AF_INET, SOCK_STREAM, 0);
    29.     if (sockfd < 0)
    30.         error("ERROR opening socket");
    31.     server = gethostbyname(argv[1]);
    32.     if (server == NULL) {
    33.         fprintf(stderr,"ERROR, no such host\n");
    34.         exit(0);
    35.     }
    36.     bzero((char *) &serv_addr, sizeof(serv_addr));
    37.     serv_addr.sin_family = AF_INET;
    38.     bcopy((char *)server->h_addr,
    39.          (char *)&serv_addr.sin_addr.s_addr,
    40.          server->h_length);
    41.     serv_addr.sin_port = htons(portno);
    42.     if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0)
    43.         error("ERROR connecting");
    44.     printf("Please enter the message: ");
    45.     bzero(buffer,256);
    46.     fgets(buffer,255,stdin);
    47.     n = write(sockfd,buffer,strlen(buffer));
    48.     if (n < 0)
    49.          error("ERROR writing to socket");
    50.     n = read(sockfd,buffer,255);
    51.     if (n < 0)
    52.          error("ERROR reading from socket");
    53.     printf("%s\n",buffer);
    54.     close(sockfd);
    55.     return 0;
    56. }

    Trước ông thầy trước ổng có xài :
    telnet + address + port
    rồi sau :
    GET patch ( ví dụ như ở đây là patch đến file .xml đi)
    rồi nó trả về màn hình file .xml đó. Ổng bảo em xài cái connect trong sys/socket.h để làm tương tự, chỉ là sau lưu lại cái file .xml đó ( như lưu trong buffer ở code trên) .

    Tạm ko nói phần râu ria ở code trên, ta có thể thấy là chương trình tạo socket rồi sau gửi massage lên host rồi ghi lại vào socket ,sau đọc ra màn hình ( chú thích ở đây tí là em cũng chưa rõ lắm socket là cái gì, có nói sai các bác thông cảm ) . Tuy nhiên thì có lẽ là tại phần massage , chương trình ko chạy giống mong đợi của em lắm , các bác ai biết bày em cái ? làm sao để có thể giống cái GET phía trên khi mình xài telnet ấy , type patch vào là nó bắn lại cho mình file luôn ý

  2. #2
    Ngày gia nhập
    09 2011
    Bài viết
    84

    bạn tính write cái gì lên host trước khi đọc vậy
    RISC better than CISC
    phamthechung0@gmail.com

  3. #3
    Ngày gia nhập
    07 2011
    Bài viết
    38

    đây em làm quả ví dụ :
    Code:
    telnet www.tutorialspoint.com 80
    Trying 184.168.65.89...
    Connected to tutorialspoint.com.
    Escape character is '^]'.
    connect thành công
    Code:
    GET /http/http_message_example.htm HTTP/1.0
    chỗ này nó bắn lại cho mình file .htm như trong đường dẫn.
    link gốc đây :http://www.tutorialspoint.com/http/h...ge_example.htm , đầu là telnet + host address , mà quả sau thì là GET + patch



    Chính là ở chỗ này , giả dụ em complie cái code client.c ở trên ra file client , em muốn tương tự là khi ta gõ vào:
    Code:
    ./client www.tutorialspoint.com 80
    nếu connect đến host thành công
    Code:
    Please enter the message:
    <chỗ này em muốn là giống cái GET ở trên ấy, type patch vào rồi = fgets ghi file .xml ở đó vào buffer >

  4. #4
    Ngày gia nhập
    11 2010
    Bài viết
    589

    Ở phần gửi, phải ghi chừng đó dòng để gửi:
    Code:
    GET /path/file.html HTTP/1.0
    From: someuser@tutorialspoint.com
    User-Agent: HTTPTool/1.0
    [blank line here]
    ở đây là 3 dòng và một dòng trắng

    còn phần nhận, phải nhận cho đến khi không còn dữ liệu nữa.

    Đây là code đã sửa qua:
    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <unistd.h>
    4. #include <string.h>
    5. #include <sys/types.h>
    6. #include <sys/socket.h>
    7. #include <netinet/in.h>
    8. #include <netdb.h>
    9.  
    10. void error(const char *msg)
    11. {
    12.     perror(msg);
    13.     exit(0);
    14. }
    15.  
    16. int main(int argc, char *argv[])
    17. {
    18.     int sockfd, portno, n;
    19.     struct sockaddr_in serv_addr;
    20.     struct hostent *server;
    21.  
    22.     char buffer[256];
    23.     if (argc < 3) {
    24.        fprintf(stderr,"usage %s hostname port\n", argv[0]);
    25.        exit(0);
    26.     }
    27.     portno = atoi(argv[2]);
    28.     sockfd = socket(AF_INET, SOCK_STREAM, 0);
    29.     if (sockfd < 0)
    30.         error("ERROR opening socket");
    31.     server = gethostbyname(argv[1]);
    32.     if (server == NULL) {
    33.         fprintf(stderr,"ERROR, no such host\n");
    34.         exit(0);
    35.     }
    36.     bzero((char *) &serv_addr, sizeof(serv_addr));
    37.     serv_addr.sin_family = AF_INET;
    38.     bcopy((char *)server->h_addr,
    39.          (char *)&serv_addr.sin_addr.s_addr,
    40.          server->h_length);
    41.     serv_addr.sin_port = htons(portno);
    42.     if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0)
    43.         error("ERROR connecting");
    44.     printf("Please enter the message: ");
    45.     bzero(buffer,256);
    46.     do {
    47.         fgets(buffer,255,stdin);
    48.         n = write(sockfd,buffer,strlen(buffer));
    49.         if (n < 0)
    50.              error("ERROR writing to socket");
    51.     } while(buffer[0] != '\n');
    52.     do {
    53.         bufer[0] = '\0';
    54.         n = read(sockfd,buffer,255);
    55.         if (n < 0)
    56.              error("ERROR reading from socket");
    57.         printf("%s\n",buffer);
    58.     } while(n > 0);
    59.     close(sockfd);
    60.     return 0;
    61. }
    Đã được chỉnh sửa lần cuối bởi boss14420 : 11-03-2012 lúc 11:23 PM.

  5. #5
    Ngày gia nhập
    07 2011
    Bài viết
    38

    Trích dẫn Nguyên bản được gửi bởi boss14420 Xem bài viết
    Ở phần gửi, phải ghi chừng đó dòng để gửi:
    Code:
    GET /path/file.html HTTP/1.0
    From: someuser@tutorialspoint.com
    User-Agent: HTTPTool/1.0
    [blank line here]
    ở đây là 3 dòng và một dòng trắng

    còn phần nhận, phải nhận cho đến khi không còn dữ liệu nữa.

    Đây là code đã sửa qua:
    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <unistd.h>
    4. #include <string.h>
    5. #include <sys/types.h>
    6. #include <sys/socket.h>
    7. #include <netinet/in.h>
    8. #include <netdb.h>
    9.  
    10. void error(const char *msg)
    11. {
    12.     perror(msg);
    13.     exit(0);
    14. }
    15.  
    16. int main(int argc, char *argv[])
    17. {
    18.     int sockfd, portno, n;
    19.     struct sockaddr_in serv_addr;
    20.     struct hostent *server;
    21.  
    22.     char buffer[256];
    23.     if (argc < 3) {
    24.        fprintf(stderr,"usage %s hostname port\n", argv[0]);
    25.        exit(0);
    26.     }
    27.     portno = atoi(argv[2]);
    28.     sockfd = socket(AF_INET, SOCK_STREAM, 0);
    29.     if (sockfd < 0)
    30.         error("ERROR opening socket");
    31.     server = gethostbyname(argv[1]);
    32.     if (server == NULL) {
    33.         fprintf(stderr,"ERROR, no such host\n");
    34.         exit(0);
    35.     }
    36.     bzero((char *) &serv_addr, sizeof(serv_addr));
    37.     serv_addr.sin_family = AF_INET;
    38.     bcopy((char *)server->h_addr,
    39.          (char *)&serv_addr.sin_addr.s_addr,
    40.          server->h_length);
    41.     serv_addr.sin_port = htons(portno);
    42.     if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0)
    43.         error("ERROR connecting");
    44.     printf("Please enter the message: ");
    45.     bzero(buffer,256);
    46.     do {
    47.         fgets(buffer,255,stdin);
    48.         n = write(sockfd,buffer,strlen(buffer));
    49.         if (n < 0)
    50.              error("ERROR writing to socket");
    51.     } while(buffer[0] != '\n');
    52.     do {
    53.         bufer[0] = '\0';
    54.         n = read(sockfd,buffer,255);
    55.         if (n < 0)
    56.              error("ERROR reading from socket");
    57.         printf("%s\n",buffer);
    58.     } while(n > 0);
    59.     close(sockfd);
    60.     return 0;
    61. }
    Em thử code bác rồi mà vẫn bad request
    với lại code bác về cơ bản cũng có khác code trên đâu

  6. #6
    Ngày gia nhập
    11 2010
    Bài viết
    589

    Mặc định socket ( sys/socket.h) và GET (sau khi telnet + tên host)

    Sao của mình lại được nhỉ ?

    Code:
    boss14420 /media/DOCUMENT/code_exp/c_example $ ./socket www.tutorialspoint.com 80
    Please enter the message: GET /path/file.html HTTP/1.0
    From: someuser@tutorialspoint.com
    User-Agent: HTTPTool/1.0
    
    HTTP/1.1 404 Not Found
    Date: Mon, 12 Mar 2012 00:25:24 GMT
    Server: Apache/2.2.3 (CentOS)
    Last-Modified: Thu, 19 May 2011 04:34:55 GMT
    ETag: "12ad57a-1e26-86e019c0"
    Accept-Ranges: bytes
    Content-Length: 7718
    Connection: close
    Content-Type: text/html
    ; charset=UTF-8
    
    <html>
    <head>
    <title>Application Error</title>
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <meta name="Keywords" content="PMP Certificat
    ion, SOAP, HTTP, RADIUS, DIAMETER, AAA, XML-RPC,Web Services, AJAX, VB.NET,JAVA, J2EE, Unix Makefile,PERL,XSL,Programming,Training,Learning, HTML Entities, HTML Color, CSS, Active Server Pages, ASP, DHTML, C++, C#, C, Pro*C" />
    <meta name="Description" co
    ntent="Free tutorials and references for SOAP XML-RPC Web Services AJAX JavaScript J2EE ASP.NET VB.NET  C# C++ C Pro*C Makefile PERL Parrot Ruby JAVA J2EE CORBA BILLING CRM OM DLL PHP CGI MySQL PL/SQL SDLC CSS ASP DHTML Flash" />
    <meta http-equiv="pragma"
     content="no-cache" />
    <meta http-equiv="cache-control" content="no-cache" />
    <base href="http://www.tutorialspoint.com">
    <link rel="stylesheet" type="text/css" href="tp.css" />
    <script src="http://www.google-analytics.com/urchin.js" type="text/javascript
    ">
    </script>
    <script type="text/javascript">
    _uacct = "UA-232293-6";
    urchinTracker();
    </script>
    </head>
    <body>
    <c
    enter>
    <a name="top"></a>
    <table border=0 class="main" cellpadding="2" cellspacing="0">
    <tr>
    <td class="content" valign="top" align="left">
    <a href="index.htm"><img src="images/tp-logo.gif" border=0  alt="Tutorials Point"></a>
    <br>
    <br>
    <div  class="searc
    h">
    <!-- SiteSearch Google -->
    <form method="get" action="http://www.google.com/custom" target="google_window">
    <table border="0">
    <tr><td nowrap="nowrap" valign="top" align="center" height="32">
    <a href="http://www.google.com/">
    <img src="http://www.goog
    le.com/logos/Logo_25wht.gif" border="0" alt="Google" align="middle"></img></a>
    </td>
    </tr>
    <tr>
    <td nowrap="nowrap">
    <input type="hidden" name="domains" value="www.tutorialspoint.com"></input>
    <input type="text" name="q" size="18" maxlength="255" value=""
    ></input>
    <input type="submit" name="sa" style="width:20px;font-weight:bold" value="..."></input>
    </td></tr>
    <tr>
    <td nowrap="nowrap">
    <table>
    <tr>
    <td>
    <input type="radio" name="sitesearch" value="" checked="checked"></input>
    <font size="-1" color="#0000
    00">Web</font>
    </td>
    <td>
    <input type="radio" name="sitesearch" value="www.tutorialspoint.com"></input>
    <font size="-1" color="#000000">This Site</font>
    </td>
    </tr>
    </table>
    <input type="hidden" name="client" value="pub-7133395778201029"></input>
    <input t
    ype="hidden" name="forid" value="1"></input>
    <input type="hidden" name="ie" value="ISO-8859-1"></input>
    <input ty
    pe="hidden" name="oe" value="ISO-8859-1"></input>
    <input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"></input>
    <input type="hidden"
     name="hl" value="en"></input>
    </td></tr></table>
    </form>
    <!-- SiteSearch Google -->
    </div>
    <br>
    &nbsp;&nbsp;<b>About TP</b>
    <div  class="search">
    <ul class="menu">
    <li><a class="left" target="_top" href="/about/index.htm">About HOME</a></li>
    <li><a class
    ="left" target="_top" href="/about/about_terms.htm" >About Copyright</a></li>
    <li><a class="left" target="_top" href="/about/about_privacy.htm" >About Privacy</a></li>
    <li><a class="left" target="_top" href="/about/about_helping.htm" >About Helping</a></l
    i>
    <li><a class="left" target="_top" href="/about/site_link_exchange.htm" >Site Link Exchange</a></li>
    <li><a class="left" target="_top" href="/about/contact_us.htm" >Contact Us</a></li>
    </ul>
    </div>
    <br>
    &nbsp;&nbsp;<b>Knowledge Sharing</b>
    <div  class="
    left">
    <ul class="menu">
    <li><a class="left" target="_top" href="add-white-paper.php" >Submit White Paper</a></li>
    </ul>
    </div>
    <br />
    &nbsp;&nbsp;<b>Selected Reading</b>
    <div  class="left">
    <ul class="menu">
    <li><a class="left" target="_top" href="comput
    er_glossary.htm">Computer Glossary</b></a></li>
    <li><a class="left" target="_top" href="computer_whoiswho.htm">Wh
    o is Who</a></li>
    </ul>
    </div>
    <br /><br />
    <small>&copy; 2010 TutorialsPoint.COM </small>
    </td>
    <td valign="top">
    <br><br>
    <table cellpadding="0" cellspacing="0">
    <tr valign="middle">
    <td  style="width:20px;"></td>
    <td  class="top">
    &nbsp;&nbsp;<a class=
    "top" href="index.htm">Home</a>&nbsp;&nbsp;
    </td>
    <td  style="width:20px;"></td>
    <td  class="top">
    &nbsp;&nbsp;<a class="top" href="references.htm">References</a>&nbsp;&nbsp;
    </td>
    <td  style="width:20px;"></td>
    <td  class="top">
    &nbsp;&nbsp;<a class="top
    " href="/about/index.htm">About TP</a>&nbsp;&nbsp;
    </td>
    <td  style="width:10px;"></td>
    <td  class="top">
    &nbsp;&nbsp;<a class="top" href="/about/about_advertising.htm">Advertising</a>&nbsp;&nbsp;
    </td>
    </tr>
    </table>
    <table class="middle" cellpadding="5"
     cellspacing="0">
    <tr>
    <td>
    <!-- PRINTING STARTS HERE -->
    <h1>System Error</h1>
    <a href="javascript:history.go(-1)"><img alt="previous" border="0" src="/images/previous.gif" /></a>
    <a href="javascript:history.go(-1)"><img alt="next" border="0" src="/image
    s/next.gif" /></a>
    <!-- AddThis Bookmark Button BEGIN -->
    <a href="http://www.addthis.com/bookmark.php" onclick="addthis_url   = location.href; addthis_title = document.title; return addthis_click(this);" target="_blank"><img src="/images/add-this.gif" bo
    rder="0" alt="AddThis Social Bookmark Button" /></a> <script type="text/javascript">var addthis_pub = 'tutorialsp
    oint';</script><script type="text/javascript" src="http://s9.addthis.com/js/widget.php?v=10"></script>  
    <!-- AddThis Bookmark Button END -->
    <hr />
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tr>
    <td valign="top">
    <p>we are very sorr
    y for any inconvenience caused. If you find any broken link then please inform us at webmaster@tutorialspoint.com and we will correct it.</p>
    <br />
    <p>Thanks for visiting us</p>
    </td>
    </tr>
    </table>
    <br />
    <hr />
    <a href="javascript:history.go(-1)"><img 
    alt="previous" border="0" src="/images/previous.gif" /></a>
    <a href="javascript:history.go(-1)"><img alt="next" border="0" src="/images/next.gif" /></a>
    <br />
    <hr />
    <!-- PRINTING ENDS HERE -->
    <h2>Website Promotion - Its FREE!</h2>
    <table cellpadding="5
    "><tr>
    <td valign="top">
    <a href="http://www.amrood.com">
    <img src="/images/amrood-ad.gif" border="0" alt="Website Promotion"/>
    </a>
    </td>
    <td>&nbsp;&nbsp;</td>
    <td valign="top">
    <p>AMROOD.com gives you free service to promote your site on the net. You ca
    n add your first page with AMROOD.com and it would not charge you anything.
    </p>
    <p><a target="_blank" href="http://www.amrood.com/advertisebusiness.htm"><b>Advertise Your Site NOW!</b></a></p>
    </td></tr></table>
    <hr />
    <script type="text/javascript"><!--
    
    google_ad_client = "pub-7133395778201029";
    google_ad_width = 336;
    google_ad_height = 280;
    google_ad_format = "33
    6x280_as";
    google_ad_type = "text_image";
    google_ad_channel ="9030538898";
    google_color_border="ffffff";
    google_color_link="900b09";
    google_color_url="000000";
    google_color_text="000000";
    //--></script>
    <script type="text/javascript" src="http://pagead2.g
    ooglesyndication.com/pagead/show_ads.js"></script>
    </td></tr>
    </table>
    </td>
    <td class="right" align="center" valign="top">
    <br><br>
    <table width="100%" cellpadding="0" cellspacing="0">
    <tr valign="center">
    <td  class="top" style="border:0px;">
    &nbsp;&nbs
    p;
    </td>
    </tr>
    </table>
    <table class="right" cellpadding="0" cellspacing="0">
    <tr>
    <td align="center" class="right">
    <p>
    <u>Advertisement</u>
    </p>
    <script type="text/javascript"><!--
    google_ad_client = "pub-7133395778201029";
    google_ad_width = 160;
    google
    _ad_height = 600;
    google_ad_format = "160x600_as";
    google_ad_type = "image";
    google_ad_channel ="";
    //--></script>
    <script type="text/javascript"
      src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    </script>
    <br /><br /></td></tr></table>
    </t
    d></tr></table>
    </body>
    </html>

  7. #7
    Ngày gia nhập
    07 2011
    Bài viết
    38

    hic, trả về thì đương nhiên là có trả về, nhưng có đúng trang mình cần đâu bác _._! như trong cái bác post trên, nó trả về cho bác trang 404 not found mà.
    với lại : /path/file.html HTTP/1.0
    cái này là cái mẫu thôi , patch = đường dẫn subfolder trên host , còn file tức là tên file cụ thể , như cái ví dụ của em trên là :
    /http/http_message_example.htm
    thì /http/ là patch còn file là httm_mesage_example.html ,
    chứ ai lại viết vào là /patch/file.htlm như thế _._!
    p.s: em mới xem lại , xài GET cũng trả về not found :( tại sao lại ko phải là file .htm như trong patch nhỉ?
    Đã được chỉnh sửa lần cuối bởi tuanc : 12-03-2012 lúc 12:03 AM.

  8. #8
    Ngày gia nhập
    11 2010
    Bài viết
    589

    Nó trả về 404 Not Found là đúng rồi, vì trên Server đâu có file file.html. Bây giờ thay bằng file http_message_example.htm thì nó sẽ trả về đúng nội dung file đó.

    Nhớ sửa dòng bufer[0] = '\0' thành bzero(bufer, 256).

    Code:
    boss14420 /media/DOCUMENT/code_exp/c_example $ ./socket www.tutorialspoint.com 80
    Please enter the message: GET /http/http_message_example.htm 
    From: someuser@tutorialspoint.com
    User-Agent: HTTPTool/1.0
    
    <html>
    <head>
    <title>HTTP Message Example</title>
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <meta name="Keywords" content="Hypertext, Transfer, Protocol,
     HTTP, Tutorial, Message Codes, HTTP Header, Response, Client , Server, Request Line, Message Body, HTTP Example, Methods, GET, POST, HEAD, PUT, Proxies, Version">
    <meta name="Description" content="This tutorial will teach you Hypertext Transfer Protocol 
    (HTTP). Here you will learn about HTTP Message Codes Header Response Client Server Methods like GET POST HEAD PUT. Finally we will give and example of HTTP Request and Response Message.">
    <meta http-equiv="pragma" content="no-cache" />
    <meta http-equiv="c
    ache-control" content="no-cache" />
    <base href="http://www.tutorialspoint.com">
    <link rel="stylesheet" type="text/css" href="tp.css" />
    <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
    </script>
    <script type="text/javascript
    ">
    _uacct = "UA-232293-6";
    urchinTracker();
    </script>
    </head>
    <body>
    <center>
    <table border=0 class="main" cellpadding="2" cellspacing="0">
    <tr>
    <td class="content" valign="top" align="left">
    <a href="index.htm"><img src="images/tp-logo.gif" border="0"  a
    lt="Tutorials Point" /></a>
    <br />
    <br />
    <div  class="search">
    <!-- SiteSearch Google -->
    <form method="get" action="http://www.google.com/custom" target="google_window">
    <table border="0">
    <tr><td nowrap="nowrap" valign="top" align="center" height="32">
    
    <a href="http://www.google.com/">
    <img src="http://www.google.com/logos/Logo_25wht.gif" border="0" alt="Google" align="middle"></img></a>
    </td>
    </tr>
    <tr>
    <td nowrap="nowrap">
    <input type="hidden" name="domains" value="www.tutorialspoint.com"></input>
    <i
    nput type="text" name="q" size="18" maxlength="255" value=""></input>
    <input type="submit" name="sa" style="width:20px;font-weight:bold" value="..."></input>
    </td></tr>
    <tr>
    <td nowrap="nowrap">
    <table>
    <tr>
    <td>
    <input type="radio" name="sitesearch" valu
    e="" checked="checked"></input>
    <font size="-1" color="#000000">Web</font>
    </td>
    <td>
    <input type="radio" name="sitesearch" value="www.tutorialspoint.com"></input>
    <font size="-1" color="#000000">This Site</font>
    </td>
    </tr>
    </table>
    <input type="hidden" 
    name="client" value="pub-7133395778201029"></input>
    <input type="hidden" name="forid" value="1"></input>
    <input type="hidden" name="ie" value="ISO-8859-1"></input>
    <input type="hidden" name="oe" value="ISO-8859-1"></input>
    <input type="hidden" name="cof" 
    value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"></input>
    <input type="hidden" name="hl" value="en"></input>
    </td></tr></table>
    </form>
    <!-- SiteSearch Google -
    ->
    </div>
    <br>
    &nbsp;&nbsp;<b>HTTP Tutorial</b>
    <div  class="left">
    <ul class="menu">
    <li><a class="left" target="_top" href="/http/index.htm">HTTP HOME</a></li>
    <li><a class="left" target="_top" href="/http/what_is_http.htm" >HTTP Overview</a></li>
    <li><
    a class="left" target="_top" href="/http/http_messages.htm" >HTTP Messages</a></li>
    <li><a class="left" target="_top" href="/http/http_methods.htm" >HTTP Methods</a></li>
    <li><a class="left" target="_top" href="/http/http_header_fields.htm" >HTTP Header F
    ields</a></li>
    <li><a class="left" target="_top" href="/http/http_status_codes.htm" >HTTP Status Codes</a></li>
    <li><a class="left" target="_top" href="/http/http_message_example.htm" ><b>HTTP Message Example</b></a></li>
    </ul>
    </div>
    <br>
    &nbsp;&nbsp;<b>
    HTTP Resources</b>
    <div  class="left">
    <ul class="menu">
    <li><a class="left" target="_top" href="/http/http_resources.htm" >HTTP Resources</a></li>
    </ul>
    </div>
    <br />
    &nbsp;&nbsp;<b>Selected Reading</b>
    <div  class="left">
    <ul class="menu">
    <li><a class=
    "left" target="_top" href="computer_glossary.htm">Computer Glossary</b></a></li>
    <li><a class="left" target="_top" href="computer_whoiswho.htm">Who is Who</a></li>
    </ul>
    </div>
    <br /><br />
    <small>&copy; 2012 TutorialsPoint.COM </small>
    </td>
    <td valign="
    top">
    <br><br>
    <table cellpadding="0" cellspacing="0">
    <tr valign="middle">
    <td  style="width:20px;"></td>
    <td  class="top">
    &nbsp;&nbsp;<a class="top" href="index.htm">Home</a>&nbsp;&nbsp;
    </td>
    <td  style="width:20px;"></td>
    <td  class="top">
    &nbsp;&nbs
    p;<a class="top" href="references.htm">References</a>&nbsp;&nbsp;
    </td>
    <td  style="width:20px;"></td>
    <td  class="top">
    &nbsp;&nbsp;<a class="top" href="/about/index.htm">About TP</a>&nbsp;&nbsp;
    </td>
    <td  style="width:10px;"></td>
    <td  class="top">
    &nb
    sp;&nbsp;<a class="top" href="/about/about_advertising.htm">Advertising</a>&nbsp;&nbsp;
    </td>
    </tr>
    </table>
    <table class="middle"  cellpadding="5" cellspacing="0">
    <tr>
    <td>
    <!-- PRINTING STARTS HERE -->
    <h1>HTTP Message Example</h1>
    <a href="/http/http_
    status_codes.htm"><img alt="previous" border="0" src="/images/previous.gif" /></a>
    <a href="/http/http_resources.htm"><img alt="next" border="0" src="/images/next.gif" /></a>
    <!-- AddThis Bookmark Button BEGIN -->
    <a href="http://www.addthis.com/bookmark.
    php" rel="nofollow" onclick="addthis_url   = location.href; addthis_title = document.title; return addthis_click(this);" target="_blank"><img src="/images/add-this.gif" border="0" alt="AddThis Social Bookmark Button" /></a> <script type="text/javascript">
    var addthis_pub = 'tutorialspoint';</script><script type="text/javascript" src="http://s9.addthis.com/js/widget.php?v=10"></script>
    <!-- AddThis Bookmark Button END -->
    <br />
    <br />
    <script type="text/javascript"><!--
    google_ad_client = "pub-713339577820
    1029";
    google_ad_width = 468;
    google_ad_height = 60;
    google_ad_format = "468x60_as";
    google_ad_type = "image";
    google_ad_channel = "";
    //--></script>
    <script type="text/javascript"
      src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    </script>
    
    <hr />
    <table width="100%" border="0" cellpadding="0" cellspacing="0">
    <tr>
    <td valign="top">
    <p>To retrieve the file at the URL
    <blockquote><pre>
    http://www.somehost.com/path/file.html
    </pre></blockquote>
    
    <p>first open a socket to the host <b>www.someh
    ost.com</b>, port 80 (use the default port of 80 because none is specified in the URL).  Then, send something like the following through the socket:</p>
    
    <table class="src" cellpadding="5"><tr><td><pre>
    GET /path/file.html HTTP/1.0
    From: someuser@tutorial
    spoint.com
    User-Agent: HTTPTool/1.0
    [blank line here]
    </pre></td></tr></table>
    
    <p>The server should respond with something like the following, sent back through the same socket:</p>
    
    <table class="src" cellpadding="5"><tr><td><pre>
    HTTP/1.0 200 OK
    Date: 
    Fri, 31 Dec 1999 23:59:59 GMT
    Content-Type: text/html
    Content-Length: 1354
    
    &lt;html&gt;
    &lt;body&gt;
    &lt;h1&gt;Happy New Millennium!&lt;/h1&gt;
    
    (more file contents)
      .
      .
      .
    &lt;/body&gt;
    &lt;/html&gt;
    </pre></td></tr></table>
    
    <p>After sending the r
    esponse, the server closes the socket.</p>
    
    <p>To familiarize yourself with requests and responses, do manually experiment with HTTP using telnet.</p>
    <h1>Manually Experimenting with HTTP</h1>
    <p>Using telnet, you can open an interactive socket to an HTTP
     server.
    This lets you manually enter a request, and see the response written
    to your screen.  It's a great help when learning HTTP, to see exactly how 
    a server responds to a particular request. It also helps when 
    troubleshooting.
    
    <p>From a Unix prompt
    , open a connection to an HTTP server with something like
    <blockquote><pre>
    telnet www.somehost.com 80
    </pre></blockquote>
    
    <p>Then enter your request line by line, like
    <blockquote><pre>
    GET /path/file.html HTTP/1.0
    [headers here, if any]
    [blank line her
    e]
    </pre></blockquote>
    
    <p>After you finish your request with the blank line, you'll see the raw
    response from the server, including the status line, headers,
    and message body.</p>
    
    </td>
    </tr></table>
    <br>
    <hr />
    <a href="/http/http_status_codes.htm"><im
    g alt="previous" border="0" src="/images/previous.gif" /></a>
    <a href="/http/http_resources.htm"><img alt="next" border="0" src="/images/next.gif" /></a>
    <a href='/cgi-bin/printversion.cgi?tutorial=http&file=http_message_example.htm' target="_blank">
    <img
     src="/images/print.gif" alt="Printer Friendly" border="0" /></a>
    <br />
    <hr />
    <!-- PRINTING ENDS HERE -->
    <script type="text/javascript"><!--
    google_ad_client = "pub-7133395778201029";
    google_ad_width = 336;
    google_ad_height = 280;
    google_ad_format = "3
    36x280_as";
    google_ad_type = "text_image";
    google_ad_channel ="9030538898";
    google_color_border="ffffff";
    google_color_link="900b09";
    google_color_url="000000";
    google_color_text="000000";
    //--></script>
    <script type="text/javascript" src="http://pagead2.
    googlesyndication.com/pagead/show_ads.js"></script>
    </td></tr>
    </table>
    </td>
    <td class="right" align="center" valign="top">
    <br><br>
    <table width="100%" cellpadding="0" cellspacing="0">
    <tr valign="center">
    <td  class="top" style="border:0px;">
    &nbsp;&nb
    sp;
    </td>
    </tr>
    </table>
    <table class="right"  cellpadding="0" cellspacing="0">
    <tr>
    <td align="center" class="right">
    <p>
    <u>Advertisement</u>
    </p>
    <!-- ADVERTISEMENT OIP STARTS HERE -->
    <table class="adv"  cellpadding="0" cellspacing="0" border="0">
    <tr
    >
    <td valign="top" nowrap="nowrap"  style="font-size:10pt;">
    <center>
    <a class="right" rel="nofollow" href="http://www.photofuntoos.com" target="_blank" title="Online Image Processing">Online Image Processing</a>
    </center>
    </td>
    </tr>
    </table>
    <br />
    <!--
     ADVERTISEMENT IBN STARTS HERE -->
    <table class="adv"  cellpadding="0" cellspacing="0" border="0">
    <tr>
    <td valign="top" nowrap="nowrap"  style="font-size:11pt;">
    <center>
    <a class="right" rel="nofollow" href="http://www.modernindianbabynames.com/" target
    ="_blank" title="Indian Baby Names">Indian Baby Names</a>
    </center>
    </td>
    </tr>
    </table>
    <br />
    <!-- ADVERTISEMENTS ENDS HERE -->
    <script type="text/javascript"><!--
    google_ad_client = "pub-7133395778201029";
    google_ad_width = 160;
    google_ad_height = 600;
    
    google_ad_format = "160x600_as";
    google_ad_type = "image";
    google_ad_channel ="";
    //--></script>
    <script type="text/javascript"
      src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    </script>
    <br /><br /></td></tr></table>
    </td></tr></table>
    <
    /center>
    </body>
    </html>

  9. #9
    Ngày gia nhập
    07 2011
    Bài viết
    38

    hay we, đc rồi. nhưng bác có thể nói em biết cơ chế hoạt động của cái socket này ko? vì sao socketfd lại là kiểu int ? rồi nữa tại sao lại phải có GET rồi mới đến patch (chứ ko phải là patch đứng không là đc) ?

  10. #10
    Ngày gia nhập
    11 2010
    Bài viết
    589

    Nói về socket chắc phải cần 1 quyển sách. Đại khái socket là một phương thức truyền thông liên tiến trình, mà các tiến trình này có thể ở trên 1 hoặc 2 máy tính khác nhau.
    socketfd là một kiểu nguyên là vì nó cũng chính là một file descripter. Ở UNIX, Linux thì mọi thứ đều được coi là file. Như bạn thấy trên kia thì ta dùng các hàm read write để đọc ghi socket giống như đọc ghi file bình thường vậy.

    GET là một lệnh của giao thức http, tại sao lại có nó là bởi vì giao thức http nó quy định thế.
    http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods

Các đề tài tương tự

  1. Lập trình Socket với C# <Socket Programming>
    Gửi bởi Xcross87 trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 10
    Bài viết cuối: 05-12-2012, 04:16 PM
  2. Không sử dụng được mảng socket (socket array)
    Gửi bởi XbikeNR125 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 22-04-2011, 10:25 PM
  3. Lập trình socket trên C để telnet vào modem?
    Gửi bởi doducanh88 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 08-03-2011, 12:32 AM
  4. cấu trúc bản tin telnet trong lập trình socket với C++?
    Gửi bởi doducanh88 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 19-01-2011, 10:26 AM
  5. Lập Trình Socket lỗi: An existing connection was forcibly closed by the remote host?
    Gửi bởi cuopbien trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 31-03-2010, 01:11 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn