windows下C語言實現HTTP server

2021-09-13 15:56:01 字數 1778 閱讀 7785

瀏覽器相當於是虛擬機器,解釋伺服器提供的指令碼語言。本次是c語言實現server,提供的檔案是halos_html.txt

伺服器是本機,一直監聽9090埠,每當訪問127.0.0.1:9090,伺服器收到請求,就會生成乙個執行緒去處理任務。

源**createthread函式參考部落格

c_str函式

const * char c_str()

乙個將string轉換為 const* char的函式。然後可以按c的方式使用這個指標,或把它的內容複製出來。

例如:string s;

cin>>s;

const char *ch=s.c_str();

這樣就可以從標準輸入裡輸入任意長的字串,並按const *char來使用。

如果要把乙個char 轉換成string, 可以使用 string s(char *);

accept函式

原型

socketpascalfaraccept(sockets,structsockadd***r*addr,intfar*addrlen);

引數  s:套介面描述字,該套介面在listen()後監聽連線。

返回值  成功返回乙個新的套接字描述符,失敗返回-1。

//#include "stdafx.h"

//注意找個**,會報錯 大概是因為注釋導致檔案終止,刪除掉大段的注釋。。。

#include #include #include #include #include #include #pragma comment(lib,"ws2_32")

#define halo_s_port 9090

/*lpvoid是乙個沒有型別的指標,也就是說你可以將lpvoid型別的變數賦值給任意型別的指標,

比如在引數傳遞時就可以把任意型別傳遞給乙個lpvoid型別為引數的方法,

然後在方法內再將這個「任意型別」從傳遞時的「lpvoid型別」轉換回來。

*///這個執行緒recv請求,處理請求,再將內容發到fd上去

static dword callback fdhandler(in lpvoid lpctx)

printf("size:%d\r\n%s\r\n", i, buffer); //列印halos_html.txt的內容

i = send(fd, buffer, i, 0);

} deletebuffer;

sleep(1000);

closesocket(fd);

return 0;

}int main(int argc, char* ar**)

listen(lfd, 1970); //三次握手過程中等待包的最大數量,防syn_flood攻擊

do else

} while ("go ahead");

wsacleanup();

return 0;

}

halos_html.txt

%_halo_%

效果圖: 隔一段時間會變色,滑鼠 放上去會變形

命令列顯示

還有addr.  addr=0就是本機位址嗎?

Linux下C語言實現CopyFile

linux下c語言實現檔案拷貝 function copy file from file1 to file2 how to execute copyfile file1 file2 under linux data 2007 05 09 include fprintf stderr,bufsiz i...

Linux下C語言實現UDP Socket程式設計

該博文參考了linux c socket 程式設計之udp一文,在這裡表示感謝!傳送方 file udp sender.c author henry created on 2019年5月29日17 08 13 主要實現 傳送20個文字訊息,然後再傳送乙個終止訊息 include include in...

Linux下C語言實現簡單Shell

include include include include include include include include define max string 256 define signin define signout define signpine const char expst ex...