简易web服务器

1.设定服务器端口号,获取服务器IP地址。

2.创建服务器监听socket     socket();

3. 连接服务器socket和端口号      bind();

4. 让服务器socket处于监听状态     listen();

5. 在循环中调用accept(),获取客户端连接的socket。accept()默认阻塞,直到有客户端连接后返回连接套接字。

6. 创建线程处理该套接字,使用recv()从socket中读取字符。

7. 解析HTTP请求报文,如

  首先是请求方法,请求URL,HTTP协议版本。

  Host:主机名

  8.将请求路径转换为本地路径,将文件的副本通过send()发送。

  9.响应报文

  起始行:HTTP协议版本,状态码。

  首部:文件类型,文件长度。

  10.发送完毕后使用close()结束通信。

  1.udp服务器

    • 创建一个socket,用函数socket();
    • 设置socket属性,用函数setsockopt();* 可选
    • 绑定IP地址、端口等信息到socket上,用函数bind();
    • 循环接收数据,用函数recvfrom();
    • 关闭网络连接

  2.udp客户端

    • 创建一个socket,用函数socket();
    • 设置socket属性,用函数setsockopt();* 可选
    • 绑定IP地址、端口等信息到socket上,用函数bind();* 可选
    • 设置对方的IP地址和端口等属性;
    • 发送数据,用函数sendto();
    • 关闭网络连接;

  3.tcp服务器

    • 创建一个socket,用函数socket();
    • 设置socket属性,用函数setsockopt(); * 可选
    • 绑定IP地址、端口等信息到socket上,用函数bind();
    • 开启监听,用函数listen();
    • 接收客户端上来的连接,用函数accept();
    • 收发数据,用函数send()和recv(),或者read()和write();
    • 关闭网络连接;
    • 关闭监听;

  4.tcp客户端

    • 创建一个socket,用函数socket();
    • 设置socket属性,用函数setsockopt();* 可选
    • 绑定IP地址、端口等信息到socket上,用函数bind();* 可选
    • 设置要连接的对方的IP地址和端口等属性;
    • 连接服务器,用函数connect();
    • 收发数据,用函数send()和recv(),或者read()和write();
    • 关闭网络连接;
原文地址:https://www.cnblogs.com/wshr007/p/11503034.html