C++实现简单的HTTP服务器(linux)
C++实现简单的HTTP服务器(linux)简单的HTTP服务器搭建成功!此篇文章面向小白!!!大神请绕道!!!因为是简单的HTTP服务器,所以只有一个文件。httpd.cpp:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/socket.h>...
·
C++实现简单的HTTP服务器(linux)
此篇文章面向小白!!!大神请绕道!!!
因为是简单的HTTP服务器,所以只有一个文件。
httpd.cpp:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <iostream>
#define IP "172.26.85.187"//这个一定要用自己服务器的IP
#define port 6666 //监听端口,可以在范围内自由设定
#define message "HTTP server is ready!"//返回给客户机的信息
using namespace std;
int main()
{
//1.创建一个socket套接字
int local_fd = socket(AF_INET, SOCK_STREAM, 0);
if (local_fd == -1)
{
cout << "socket error!" << endl;
exit(-1);
}
cout << "socket ready!" << endl;
//2.sockaddr_in结构体:可以存储一套网络地址(包括IP与端口),此处存储本机IP地址与本地的一个端口
struct sockaddr_in local_addr;
local_addr.sin_family = AF_INET;
local_addr.sin_port = htons(port); //绑定6666端口
local_addr.sin_addr.s_addr = inet_addr(IP); //绑定本机IP地址
//3.bind(): 将一个网络地址与一个套接字绑定,此处将本地地址绑定到一个套接字上
int res = bind(local_fd, (struct sockaddr *)&local_addr, sizeof(local_addr));
if (res == -1)
{
cout << "bind error!" << endl;
exit(-1);
}
cout << "bind ready!" << endl;
//4.listen()函数:监听试图连接本机的客户端
//参数二:监听的进程数
listen(local_fd, 10);
cout << "等待来自客户端的连接...." << endl;
while (true)//循环接收客户端的请求
{
//5.创建一个sockaddr_in结构体,用来存储客户机的地址
struct sockaddr_in client_addr;
socklen_t len = sizeof(client_addr);
//6.accept()函数:阻塞运行,直到收到某一客户机的连接请求,并返回客户机的描述符
int client_fd = accept(local_fd, (struct sockaddr *)&client_addr, &len);
if (client_fd == -1)
{
cout << "accept错误\n"
<< endl;
exit(-1);
}
//7.输出客户机的信息
char *ip = inet_ntoa(client_addr.sin_addr);
cout << "客户机: " << ip << " 连接到本服务器成功!" << endl;
//8.输出客户机请求的信息
char buff[1024] = {0};
int size = read(client_fd, buff, sizeof(buff));
cout << "Request information:\n"
<< buff << endl;
cout << size << " bytes" << endl;
//9.使用第6步accept()返回socket描述符,即客户机的描述符,进行通信。
write(client_fd, message, sizeof(message));//返回message
//10.关闭sockfd
close(client_fd);
}
close(local_fd);
return 0;
}
编译运行:
测试服务器:
客户端IE浏览器输入(务必使用IE) http://39.100.252.159:6666/(http://服务器IP地址:端口号/):
回车进行访问:
客户端:
服务器端:
简单的HTTP服务器搭建成功!
更多推荐
已为社区贡献1条内容
所有评论(0)