深入探討tiny服務器

  最近學習到了《深入理解計算機系統》的第11章網絡編程,在最后一節是一個名為tiny的小型web服務器的實現,源代碼書中已經給出,這里就不再復制粘貼了。這篇小博客主要記錄一下課后題10的解答。原題目為:
???  寫出cgi adder函數的html表單。你的表單應該包括兩個文本框,用戶將需要相加的兩個數字填在這兩個文本框中。你的表單應該使用get方法請求內容。
???  因為我以前沒接觸過html表單,先百度之,找到了w3school的html教材,看了一下表單的部分,寫出了一個很簡單的小表單,命名為index.html:

 1 <!DOCTYPE html> 2 <html> 3 <body> 4  5 <p> 6 please enter two numbers:<br> 7 </p> 8  9 <form action="/cgi-bin/adder">10   The first number:11   <input type="number" name="num1"> <br>12   The second number:13   <input type="number" name="num2"> <br>14   <input type="submit" value="Submit">15 </form>16 17 </body>18 </html>

  這是輸入localhost:8888之后瀏覽器顯示的效果圖。8888是我設置的tiny的端口,至于為什么沒有后邊的/index.html,是因為我在源代碼中將index.html設為了主界面。

深入探討tiny服務器

  我們可以隨便輸入兩個數字,點擊Submit按鈕,結果肯定是不對的。。

深入探討tiny服務器

  如上圖所示,結果顯示的是0。注意在該網頁的地址欄處,我們看到”localhost:8888/cgi-bin/adder?num1=22&num2=22″,看過tiny源碼我們就會知道,adder.c所要分析的數據是在&符號兩邊的純數字,也就是說,要想正確的被adder.c程序求和,地址欄應該顯示”localhost:8888/cgi-bin/adder?22&22″才對。出現上圖中的錯誤的原因就是,adder程序沒有取得兩個參數的數值大小。解決方法很簡單,只需要在adder.c程序里把兩個數字取出來就行了,整個adder.c代碼如下所示:

 1 #include "net.h" 2  3 int main(void) 4 { 5     char *buf, *p; 6     char arg1[MAXLINE], arg2[MAXLINE], content[MAXLINE]; 7     char tmp[MAXLINE]; 8     int n1 = 0, n2 = 0; 9 10     if ( (buf = getenv("QUERY_String")) != NULL) {11         p = strchr(buf, '&');12         *p = '

久久91这里精品国产2020|
少妇久久久久久被弄到高潮|
国产成人无码精品久久久性色
|
亚洲午夜无码AV毛片久久|
香蕉久久夜色精品国产尤物|
久久精品国产久精国产果冻传媒
|
91精品国产91久久久久久青草|
久久综合久久久|
久久这里只精品99re66|
久久超乳爆乳中文字幕|
国产精品久久久久一区二区三区
|
女人香蕉久久**毛片精品|
欧美久久久久久精选9999|
伊人久久大香线蕉亚洲|
国产精品亚洲美女久久久|
久久婷婷五月综合色奶水99啪|
丁香五月综合久久激情|
久久久久亚洲av无码专区导航
|
久久久久久久久久免免费精品|
亚洲香蕉网久久综合影视|
久久久久亚洲精品无码网址|
亚洲中文字幕无码久久2020|
欧美午夜精品久久久久久浪潮|
99精品国产在热久久无毒不卡|
国产精品久久久久AV福利动漫|
久久婷婷五月综合97色直播|
久久精品无码一区二区无码|
欧美国产精品久久高清|
久久天天躁狠狠躁夜夜躁2014|
香蕉久久一区二区不卡无毒影院
|
亚洲国产精品无码成人片久久|
久久婷婷五月综合成人D啪|
久久久久久久久久久精品尤物|
国产三级观看久久|
久久精品免费观看|
97精品伊人久久大香线蕉app
|
久久人爽人人爽人人片AV|
久久久久久午夜精品|
久久久久久国产a免费观看不卡|
久久久久四虎国产精品|
国产精品久久久久久一区二区三区|