引言
由于自己对linux掌握的不多,但又对服务器和客户端有那么点兴趣,而目前网上的webserver基本都是linux下的,所以在想是否可以用window来做,因为我的本意只是想简单了解下socket等而已,不需要那么复杂的功能,这个代码只需要一个cpp就可以简单实现
学习思路很简单,先把我的代码运行下,先看下实现的效果再来看源代码
后面有时间的话,我会更新更多关于源码的解析
基本思路
对webserver完全没有概念的人可以先简单了解下流程:初始化Winsock、创建服务器套接字、绑定套接字到地址、监听地址、处理客户端请求、构造服务器响应、发送服务器响应,关闭客户端套接字和清理资源,最后关闭服务器套接字,清理Winsock资源并退出程序
源代码
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#pragma comment(lib, "ws2_32.lib")
#include <iostream>
#include <WinSock2.h>
#include <string>
int main()
{
std::cout << "create a server\n";
SOCKET wsocket;
SOCKET new_wsocket;
WSADATA wsaData;
struct sockaddr_in server;
int server_len;
int BUFFER_SIZE = 30720;
//初始化Winsock
if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0)
{
std::cout << "not initialize";
}
//创建服务器套接字
wsocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (wsocket == INVALID_SOCKET)
{
std::cout << "not create sock