GO语言练习:网络编程 TCP 示例
1、代码
2、编译及运行
1、网络编程 TCP 示例 simplehttp.go 代码
1 package main 2 3 import ( 4 "net" 5 "os" 6 "io" 7 "bytes" 8 "fmt" 9 ) 10 11 func main() { 12 if len(os.Args) != 2 { 13 fmt.Fprintf(os.Stderr, "Usage : %s host:port", os.Args[0]) 14 os.Exit(1) 15 } 16 service := os.Args[1] 17 conn, err := net.Dial("tcp", service) 18 checkError(err) 19 20 _, err = conn.Write([]byte("HEAD / HTTPD/1.0\r\n\r\n")) 21 checkError(err) 22 23 result, err := readFully(conn) 24 checkError(err) 25 26 fmt.Println(string(result)) 27 28 os.Exit(0) 29 } 30 31 func checkError(err error) { 32 if err != nil { 33 fmt.Fprintf(os.Stderr, "Fatal error : %s\n", err.Error()) 34 os.Exit(1) 35 } 36 } 37 38 func readFully(conn net.Conn) ([]byte, error) { 39 defer conn.Close() 40 41 result := bytes.NewBuffer(nil) 42 var buf [512]byte 43 for { 44 n, err := conn.Read(buf[0:]) 45 result.Write(buf[0:n]) 46 if err != nil { 47 if err == io.EOF { 48 fmt.Println("over...") 49 break 50 } 51 return nil, err 52 } 53 } 54 55 return result.Bytes(), nil 56 }
2、编译及运行
2.1)编译
$ go build simplehttp.go
$ ls
simplehttp simplehttp.go
2.2)运行
$ ./simplehttp www.xin3e.com:80 over... HTTP/1.1 302 Found Date: Mon, 20 Jul 2015 15:18:13 GMT Server: Apache/2.2.22 (Ubuntu) X-Powered-By: PHP/5.3.10-1ubuntu3.19 Location: web/index.php Vary: Accept-Encoding Connection: close Content-Type: text/html
作 者:fengbohello
个人网站:http://www.fengbohello.top/
E-mail : fengbohello@foxmail.com
欢迎转载,转载请注明作者和出处。
因作者水平有限,不免出现遗漏和错误。希望热心的同学能够帮我指出来,我会尽快修改。愿大家共同进步,阿里嘎多~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?