函数功能
包含头文件
#pragma once
#include<stdio.h>
#include<WinSock2.h>
#pragma comment(lib, "ws2_32.lib")
套接字初始化
void webServer::init()
{
if (0 != WSAStartup(MAKEWORD(2, 2), &wsaData))
{
error("WSAStartup");
}
servSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if (servSock == -1)
{
error("socket");
exit(-1);
}
sockaddr_in sockAddr;
memset(&sockAddr, 0, sizeof(sockAddr));
sockAddr.sin_family = PF_INET;
sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
sockAddr.sin_port = htons(20703);
if (0 != bind(servSock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR)))
{
error("bind");
exit(-1);
};
}
报错
void webServer::error(const char* str)
{
printf("%s failed:%d", str, WSAGetLastError());
exit(-1);
}
接受客户端请求并发送响应报文
void webServer::start()
{
char recvbuf[4096]={
0};
char sendbuf[4096] = {
"HTTP/1.1 200 OK\r\n"
"Content-Type: text/html\r\n"
"\r\n"
"<!DOCTYPE html>\r\n"
"<html>\r\n"
"<head>\r\n"
" <title>个人主页</title>\r\n"
" <style>\r\n"