计算机网络cs144之lab0

本文详细介绍了如何在Linux环境下通过telnet模拟浏览器发送HTTP请求,并使用TCPSocket实现WebGet功能。此外,还探讨了自定义内存中可靠的字节流数据结构,即ByteStream,用于在TCP连接中确保数据传输的可靠性。

1 建立课程开发环境

课程使用的是基于Linux的系统,可以使用ubuntu发行版。(安装过程略过)
可参考:https://blog.youkuaiyun.com/u_hcy2000/article/details/121506905?spm=1001.2014.3001.5501

2 Fetch a Web page

使用telnet来体会浏览器是如何通过HTTP协议从服务器获取一个页面(HTML文档)的

2.1 浏览器发送http请求

  1. 通过浏览器发送 http://cs144.keithw.org/hello 请求
  2. 查看页面响应结果:Hello, CS144!

2.2 telnet模拟浏览器发送http请求

键入 telnet cs144.keithw.org http,http请求与服务器建立连接
键入 GET /hello HTTP/1.1 ,这句话告诉服务器 URL 的路径(path)
键入 Host: cs144.keithw.org 这告诉服务器 URL 的主机(host)
键入Connection: close 结束请求
键入 空行,完成了http请求

查看服务器的响应信息如下:
在这里插入图片描述
扩展:HTTP请求简介
设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。
HTTP 请求一共分为四个部分:请求行,请求头,空行,请求体。
在这里插入图片描述
HTTP响应报文格式:响应行、响应头、空行、响应体 四个部分。
在这里插入图片描述

3 WebGet

使用TCPSocket来实现发送http请求,并获取响应信息,打印出来。

  1. 创建一个TCPSocket并与服务器建立连接。
  2. 向服务器发送请求,格式参照前面fetch a web page部分,注意在HTTP中每行的结尾应该为\r\n。
  3. 发送完请求后,客户端应该关闭TCPSocket的写功能,对应前面的Connection:close,告诉服务器请求已经发送完毕,服务器只要回复完数据后就可以立刻断开连接。
  4. 循环读取从服务器发送过来的信息,直到遇到EOF(end of file)。 最后记得需要关闭前面创建的TCPSocket。

课程代码:

void get_URL(const string &host, const string &path) {
   
   
    // telnet cs144.keithw.org http
    // GET /hello HTTP/1.1
    // Host: cs144.keithw.org
    // Connection: close

    // 创建一个客户端对象
    TCPSocket client_socket;
    // 与服务器建立TCP连接
    client_socket.connect(Address(host, "http"));
    // 客户端发送请求request
    string reqMsg = "GET "+path+" HTTP/1.1\r\n"+"Host: "+host+"\r\nConnection: close\r\n\r\n";
    client_socket.write(reqMsg);

    // 客户端接收服务端的响应response
    while(!client_socket.eof()){
   
   
        string recvMsg = client_socket.read();
        cout<<recvMsg
### 如何在 Windows 系统中安装 PythonQt Designer 并配置环境 #### 安装 PyQt6 和 Qt Designer 为了在 Windows 上使用 Qt Designer,可以通过 `pip` 命令安装最新的 PyQt6 模块。PyQt6 是一个用于创建图形用户界面 (GUI) 应用程序的工具包,并附带了 Qt Designer 工具。 运行以下命令可以完成 PyQt6 及其相关组件的安装: ```bash pip install pyqt6-tools ``` 此命令会自动下载并安装必要的依赖项,其中包括 Qt Designer[^1]。 #### 配置路径以便访问 Qt Designer 安装完成后,通常可以在以下目录找到 Qt Designer 文件(具体位置取决于 Python 解释器的位置): - **对于标准安装**:`C:\Users\<用户名>\AppData\Local\Programs\Python\<版本号>\Lib\site-packages\pyqt6_tools` - 或者通过脚本启动:`python -m pyqt6_designer`. 如果希望直接从文件资源管理器或桌面快捷方式打开 Qt Designer,则需将其可执行文件所在路径添加到系统的环境变量 PATH 中。操作方法如下: 1. 打开控制面板 -> 系统和安全 -> 系统 -> 高级系统设置。 2. 单击“环境变量”,在“系统变量”部分找到名为 “Path”的条目并编辑它。 3. 添加上述提到的设计工具所在的完整路径至列表末尾。 这样处理之后,在任意 CMD 终端窗口输入 designer.exe 就能调用该应用程序。 #### 测试安装成功与否 验证是否正确设置了所有内容的一个简单办法就是尝试加载设计模式本身或者利用 PyQT 创建一个小项目来看看能否正常渲染 UI 元素。下面给出一段简单的例子展示如何载入由设计师保存下来的 .ui 文件并通过 python 运行起来: ```python from PyQt6 import uic import sys from PyQt6.QtWidgets import QApplication, QMainWindow class MyUI(QMainWindow): def __init__(self): super(MyUI,self).__init__() # 加载 ui 文件 uic.loadUi('your_ui_file.ui', self) if __name__ == '__main__': app = QApplication(sys.argv) window = MyUI() window.show() try: sys.exit(app.exec()) except SystemExit: pass ``` 以上代码片段假设存在一个叫做 'your_ui_file.ui' 的文件位于当前工作目录下,它是之前通过 Qt Designer 构建出来的界面布局定义文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值