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
复制代码

 


本文转自郝峰波博客园博客,原文链接:http://www.cnblogs.com/fengbohello/p/4663077.html,如需转载请自行联系原作者


相关文章
|
2天前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
22 13
|
2天前
|
网络协议 安全 Go
Go语言的网络编程基础
【10月更文挑战第28天】Go语言的网络编程基础
17 8
|
1天前
|
Go
go语言的复数常量
【10月更文挑战第21天】
13 6
|
1天前
|
Go
go语言的浮点型常量
【10月更文挑战第21天】
8 4
|
1天前
|
编译器 Go
go语言的整型常量
【10月更文挑战第21天】
7 3
|
1天前
|
Serverless Go
Go语言中的并发编程:从入门到精通
本文将深入探讨Go语言中并发编程的核心概念和实践,包括goroutine、channel以及sync包等。通过实例演示如何利用这些工具实现高效的并发处理,同时避免常见的陷阱和错误。
|
2天前
|
安全 Go 开发者
代码之美:Go语言并发编程的优雅实现与案例分析
【10月更文挑战第28天】Go语言自2009年发布以来,凭借简洁的语法、高效的性能和原生的并发支持,赢得了众多开发者的青睐。本文通过两个案例,分别展示了如何使用goroutine和channel实现并发下载网页和构建并发Web服务器,深入探讨了Go语言并发编程的优雅实现。
8 2
|
2天前
|
安全 网络协议 Go
Go语言网络编程
【10月更文挑战第28天】Go语言网络编程
89 65
|
2天前
|
Go
go语言编译时常量表达式
【10月更文挑战第20天】
11 3