[C语言][网络编程][源码阅读]简单Web服务端实现:浏览器访

2020-09-04  本文已影响0人  AkuRinbu

目录

零、完整源码下载
一、代码运行结果(这个代码有啥用?)
二、服务器端(Server)与 客户端(Client)
三、用套接字来连接网络
四、源码阅读
  1、webserv_linux.c是基于多线程模型实现的Web服务器端
  2、Socket 套接字部分
    (1) 套接字 serv_sock 的作用
    (2) Request Header ,实现响应GET请求
    (3) 套接字 clnt_sock的作用
    (4) Response Header ,响应消息
    (5) 调用自定义函数 send_data() 响应客户端请求
    (6) index.html 源码

零、完整源码下载

图灵社区《TCP/IP网络编程》
https://www.ituring.com.cn/book/1284

(1) 右侧 随书下载 TCPIP_Src.zip
(2) 下载 解压 完整源码位于 TCPIP_Src.zip\Chapter24 source
(3) 含有文件 index.htmlwebserv_linux.cwebserv_win.c

一、代码运行结果(这个代码有啥用?)

C/S 请求响应 全流程示意图

1、启动服务器端 自定义端口号为 9190

自定义端口 9190

2、打开火狐浏览器,输入 http://127.0.0.1:9190/index.html 并回车

浏览器访问
$ ls
index.html  webserv_linux.c  

$ gcc webserv_linux.c -o wserv -lpthread
$ ./wserv 9190
Connection Request : 127.0.0.1:45472
Connection Request : 127.0.0.1:45474
Connection Request : 127.0.0.1:45476
Connection Request : 127.0.0.1:45478
. . .

二、服务器端(Server)与 客户端(Client)

三、用套接字来连接网络

服务端套接字

服务端套接字 猪仔图标🐖是我个人喜好,和编程无关
书上[1]用了 安装电话机socket()、分配电话号码bind()、连接电话线listen()、拿起话筒accept()、通话read()/write()、挂断close()这个例子来说明服务端套接字一系列函数的使用顺序和场景,贴切、实用、好记👍

客户端套接字

客户端套接字 独角兽图标🦄是我个人喜好,和编程无关
本文中浏览器承担了客户端的角色,这里不需要自己写客户端的代码了

四、源码阅读

1、webserv_linux.c是基于多线程模型实现的Web服务器端

2、Socket 套接字部分

(1) 套接字 serv_sock 的作用

服务端套接字serv_sock的作用

(2) Request Header ,实现响应GET请求

GET /index.html HTTP/1.0
Host: localhost:9190
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
请求消息 Request Header

(3) 套接字 clnt_sock的作用

套接字 clnt_sock的作用

(4) Response Header ,响应消息

HTTP/1.0 200 OK
Server: Linux Web Server
Content-length: 2048
Content-type: text/html
响应消息 Response Header

(5) 调用自定义函数 send_data() 响应客户端请求

自定义函数 send_data() 响应客户端请求

(6) index.html 源码

<html>
    <head>
        <title>NETWORK</title>
    </head>
    <body>
        <font size=5>
        TCP/IP Socket Programming
        Hello World!
        </font>
    </body>
</html>

我的小结

参考资料

上一篇下一篇

猜你喜欢

热点阅读