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,如需转载请自行联系原作者


相关文章
|
3天前
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
21 11
|
1天前
|
安全 Go 云计算
探索Go语言在微服务架构中的应用与优势
在本文中,我们将深入探讨Go语言(又称为Golang)在构建微服务架构中的独特优势。文章将分析Go语言的并发模型、简洁的语法以及高效的编译速度,以及这些特性如何使其成为微服务架构的理想选择。我们将通过一个简单的微服务示例,展示Go语言在实际开发中的表现,并讨论其在性能和可维护性方面的优势。
|
7天前
|
网络协议 Java API
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
27 2
|
7天前
|
存储 网络协议 Java
【网络】UDP和TCP之间的差别和回显服务器
【网络】UDP和TCP之间的差别和回显服务器
15 1
|
1天前
|
JSON 搜索推荐 Go
ZincSearch搜索引擎中文文档及在Go语言中代码实现
ZincSearch官网及开发文档均为英文,对非英语用户不够友好。GoFly全栈开发社区将官方文档翻译成中文,并增加实战经验和代码,便于新手使用。本文档涵盖ZincSearch在Go语言中的实现,包括封装工具库、操作接口、统一组件调用及业务代码示例。官方文档https://zincsearch-docs.zinc.dev;中文文档https://doc.goflys.cn/docview?id=41。
|
2天前
|
安全 Go 调度
探索Go语言的并发之美:goroutine与channel的实践指南
在本文中,我们将深入探讨Go语言的并发机制,特别是goroutine和channel的使用。通过实际的代码示例,我们将展示如何利用这些工具来构建高效、可扩展的并发程序。我们将讨论goroutine的轻量级特性,channel的同步通信能力,以及它们如何共同简化并发编程的复杂性。
|
4天前
|
安全 Go 数据处理
掌握Go语言并发:从goroutine到channel
在Go语言的世界中,goroutine和channel是构建高效并发程序的基石。本文将带你一探Go语言并发机制的奥秘,从基础的goroutine创建到channel的同步通信,让你在并发编程的道路上更进一步。
|
6天前
|
存储 Kubernetes Go
Go语言项目组织架构
Go语言项目组织架构
|
5月前
|
机器学习/深度学习 人工智能 网络协议
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
TCP/IP五层(或四层)模型,IP和TCP到底在哪层?
89 4
|
监控 网络协议 网络架构
IP协议【图解TCP/IP(笔记九)】
IP协议【图解TCP/IP(笔记九)】
130 0

热门文章

最新文章