VC++实现简单HTTP服务器
生活随笔
收集整理的這篇文章主要介紹了
VC++实现简单HTTP服务器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
此程序實現了瀏覽器通過IP地址和端口訪問HTTP服務器,服務器簡單做出回應,是根據TCP服務器程序改編的,用VC++6.0編譯后,使用Google瀏覽器訪問,能達到預期效果。由于HTTP協議是由TCP協議而來,此程序就是用TCP程序作了簡單改變,缺少眾多請求處理過程。
#include<stdio.h> #include<winsock2.h> #pragma comment(lib,"WS2_32") int main() {WSADATA swadata;WORD sockVersion=MAKEWORD(2,0);//winsock的版本2.0WSAStartup(sockVersion,&swadata);//加載WInsock庫,swadata返回庫的信息//創建套接字SOCKET s=::socket(AF_INET,SOCK_STREAM,0);if(s==-1){printf("Creat scoket is failed!\n");::WSACleanup();system("pause");return 0;}//填充socaddr_in結構sockaddr_in sin;sin.sin_family=AF_INET;sin.sin_port=htons(8866);//1024--65535的端口號sin.sin_addr.S_un.S_addr=INADDR_ANY;//綁定這個套接字到本地地址if(::bind(s,(SOCKADDR*)&sin,sizeof(sin))==SOCKET_ERROR){printf("bind is failed!\n");::WSACleanup();system("pause");return 0;}//監聽模式if(::listen(s,2)==SOCKET_ERROR){printf("listen is failed!\n");::WSACleanup();system("pause");return 0;}printf("正在監聽....\n");//循環接受連接請求sockaddr_in addrlink;int Len=sizeof(addrlink);char anser[]="HTTP/1.1 200 OK\r\n\r\n<html><head><title></title></head><body>yours</body></html>\r\n";char buf[1024];SOCKET client;while(1){client=::accept(s,(SOCKADDR*)&addrlink,&Len);if(client==INVALID_SOCKET){printf("accept is failed!");continue;}int n;while((n=::recv(client,buf,1024,0))==0);buf[n]='\0';printf("客戶:(%s)",inet_ntoa(addrlink.sin_addr));printf("\n%s\n",buf);::send(client,anser,strlen(anser),0); }::closesocket(client);::closesocket(s);::WSACleanup();return 0;}
總結
以上是生活随笔為你收集整理的VC++实现简单HTTP服务器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS录屏/自定义相机
- 下一篇: 分享一个超级玛丽源码