VC++实现简单HTTP服务器

VC++实现简单HTTP服务器此程序实现了浏览器通过 IP 地址和端口访问 HTTP 服务器 服务器简单做出回应 是根据 TCP 服务器程序改编的 用 VC 6 0 编译后 使用 Google 浏览器访问 能达到预期效果 由于 HTTP 协议是由 TCP 协议而来 此程序就是用 TCP 程序作了简单改变 缺少众多请求处理过程

此程序实现了浏览器通过IP地址和端口访问HTTP服务器,服务器简单做出回应,是根据TCP服务器程序改编的,用VC++6.0编译后,使用Google浏览器访问,能达到预期效果。由于HTTP协议是由TCP协议而来,此程序就是用TCP程序作了简单改变,缺少众多请求处理过程。

#include 
  
    #include 
   
     #pragma comment(lib,"WS2_32") int main() { WSADATA swadata; WORD sockVersion=MAKEWORD(2,0);//winsock的版本2.0 WSAStartup(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 
     yours \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服务器

VC++实现简单HTTP服务器




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217122.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午10:17
下一篇 2026年3月18日 上午10:18


相关推荐

  • 数据结构:顺序表的基本操作

    数据结构:顺序表的基本操作线性表的顺序存储顺序表的线性存储示意图 C 语言定义线性表的顺序存储结构线性表的顺序存储 nbsp nbsp nbsp nbsp 线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素 使得线性表在逻辑结构上相邻的元素存储在连续的物理存储单元中 即 通过数据元素物理存储的连续性来反应元素之间逻辑上的相邻关系 采用顺序存储结构存储的线性表通常简称为顺序表 nbsp nbsp nbsp nbsp 顺序存

    2026年3月18日
    1
  • java三大框架是什么?

    java三大框架是什么?常说的三大框架指:SSH即:Spring、Struts、HibernateSpring:采用了控制反转的技术,管理Bean,降低了各层之间的耦合,功能强大的组件粘合济,能够将你的所有的java功能模块用配置文件的方式组合起来(还让你感觉不到spring的存在)成为一个完成的应用。 Struts:基于MVC的充当了其中的试图层和控制器,不说了,大名鼎鼎的功能强大的MVC架构。 

    2022年7月8日
    25
  • js字符串操作方法(js对象转字符串)

    一、关于字符串分割1、slice(start,end);关于这个方法,一定要搞懂四个关键点:(1)截取字符串时不包括下标为end的元素。(2)end是可选参数,没有时,默认从start到结束的所有字符串。(3)String.slice与Array.slice区别。(4)参数为负数时,是如何处理的。其中第3点其实就是在JavaScript中字符串和数组都具有这个方法,它们…

    2022年4月18日
    53
  • System setProperty(property,value)方法

    System setProperty(property,value)方法通常JDKd的运行参数设置为#forlinuxexportJAVA_OPTS=”$JAVA_OPTS-Dcode=BeiJing”#forwinsetJAVA_OPTS=%JAVA_OPTS% -Dcode=BeiJing相当于Java代码里面实现System.setProperty(“code”,”BeiJing”);同时,获取code的值则可以用下列

    2022年7月12日
    23
  • java 动态获取web应用的部署路径[通俗易懂]

    java 动态获取web应用的部署路径

    2022年1月27日
    45
  • SMTP错误码建议解决方法

    SMTP错误码建议解决方法

    2021年9月21日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号