GO语言工程实践课后作业

54 阅读2分钟

猜谜游戏

  • 首先通过 go 语言内置的 math/rand 包的 rand.Intn() 来生成随机数字作为谜底 需要注意的是在 go 语言较新的编译器已经不需要再自己设置随机数种子,可以直接使用该方法来生成随机数字了
secretNumber := rand.Intn(100)
  • 然后初始化一个 reader 流来进行终端的输入的读取, 这里使用 bufio.NewReader()来创建
reader := bufio.NewReader(os.Stdin)
  • 现在通过 for 循环来对用户的输入进行读取判断, 通过输入与随机生成的数字比较获得结果输出

在线词典

这个项目通过对一个翻译网站的 http 协议的 格式进行解析, 然后使用 go 语言 构造对应的 协议格式, 并且将构造好的协议发送向对应服务器, 并且获得响应后解析所获得的数据来对输入的东西进行翻译

  • 首先打开 彩云科技 官网, 使用浏览器自带的网络调试工具在该网站进行翻译, 获得对应的 http 协议格式
  • 将获得的 http 格式 放到一个 将 curl2go 的网站自动生成对应的 go 语言代码, 将其中的要翻译的字符空出到时候通过终端输入来动态填入.
  • 通过解析网络调试的数据, 获得响应的格式, 通过 json2go 将对应的格式的数据直接通过网站转换为 go 语言的 结构体来对数据进行存储
  • 通过分析来获得所需要的字段返回给终端输入数据的用户

socks5代理

通过 go 语言实现 socks5 协议, 转发浏览器的消息到 socks5 代理, 通过 socks5 代理将对应的数据转发到对应服务器

socks5协议的过程

  1. 首先 Client 与 socks5 Server 进行协商 (主要协商版本号, 认证方法数量等信息)
+----+----------+----------+
|VER | NMETHODS | METHODS  |
+----+----------+----------+
| 1  |    1     | 1 to 255 |
+----+----------+----------+
VER: 协议版本, socks5 为 0x05
NMETHODS: 支持认证的方法数量
METHODS: 对应的 NMETHODS
  1. Socks5 Server 通过协商发送回响应
  2. Client 开始发送请求向 Socks5 Server
  3. Socks5 Server 接收到后通过解析获得目的ip, 向目的 Host 建立 TCP 连接
  4. Host 接收后返回响应给 Socks5 Server
  5. Socks5 Server 将响应状态返回给 Client
  6. 确认无误后 Client 开始向 Socks5 Server 发送数据
  7. Socks5 Server 将数据转发给 Host
  8. Host 接收后将响应结果返回给 Socks5 Server
  9. Socks5 Server 将结果返回给 Client