zoukankan      html  css  js  c++  java
  • 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
    
    "))
    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
    ", 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
  • 相关阅读:
    量化投资:第3节 滑点策略与交易手续费
    量化投资:第2节 择时策略的优化
    量化投资: 第1节 择时策略的开发
    一步一步,完成sparkMLlib对日志文件的处理(1)
    JAVA接口与抽象类区别
    HDU1877 又一版 A+B
    HDU4548 美素数
    超级楼梯 HDU2041
    HDU2013 蟠桃记【递推】
    HDU1262 寻找素数对
  • 原文地址:https://www.cnblogs.com/fengbohello/p/4663077.html
Copyright © 2011-2022 走看看