Go语言的环境配置与 Socks 小服务器开发| 青训营笔记

201 阅读2分钟

ArchLinux 上通过 vscode 开发 Go

安装 Go 编译器和 Go 开发中常用的工具(比如 goimports)

sudo pacman -S go go-tools

vscode 插件安装

  1. 在插件商城中搜索 go ,并安装

image.png

  1. Ctrl + Shift + p 打开 vscode 命令框,输入 Go: Install/Update Tools ,全选所有项目并安装。

image.png

注意:安装过程中需要连接 github,如果连接网络失败,可以在 vscode 中的设置中配置 proxy.

测试运行 helloworld

通过一个 go 小程序来测试是否环境安装成功。

hello.go

package main

import "fmt"

func main() {
    fmt.Println("Hello, Arch!")
}

输入命令

go ./hello.go

终端打印出 Hello, Arch! 说明 go 语言环境安装成功。

$GOPATH

$GOPATH 默认设置在 ~/go 文件夹

该文件夹默认的文件目录为

  • bin 项目编译生成的二进制文件
  • pkg 项目编译的中间产物,加速编译
  • src 项目源码

命令 go get 可以下载最新版本的包到 src 目录下。

这种方式会存在一个弊端:即所有的项目都依赖于 src ,这样不同项目就无法实现所依赖 packages 多版本控制。

Go Module

Go Module 可以解决依赖问题。

参考文献:Go Module

Sock5 开发

根据《Go 语言的实战案例》,首先了解 Socks5 的工作原理,然后跟着老师手写一遍 Sock5 服务器的代码。

Sock5 原理

我们正常访问一个网页,如果不经过代理服务器,访问流程就是:建立 TCP 连接(三次握手) -> 发送 HTTP 请求 -> 返回 HTTP 相应。如果经过代理服务器,则需要在一开始多一个和服务器建立 TCP 连接的步骤,然后再通过服务器与请求服务器建立 TCP 连接。

实现时:

  1. 先实现了一个 TCP echo server,我们向该 server 发送任意信息,它会原封不动地返还给我们。
  2. 给 TCP echo server 添加 auth 功能,通过解析向 server 发送的消息的内容来决定是否授权。
  3. 使 TCP echo server 与目标服务器建立连接,实现消息发送与转发。

源代码仓库地址