1. 程式人生 > >go語言實現http

go語言實現http

Server

package main

import (
	"net/http"
	"os"
	"io"
)

func main()  {
	http.HandleFunc("/",handle)
	http.ListenAndServe("127.0.0.1:8005",nil)
}

func handle(w http.ResponseWriter,r *http.Request)  {
	url:=r.URL.String()
	fp,err:=os.Open("/Users/zmx/go/180726/src/main"+url)
	if err!=nil {
		w.Write([]byte(err.Error()))
		return
	}
	defer fp.Close()
	buf:=make([]byte,4096)
	for  {
		n,err:=fp.Read(buf)
		if err==io.EOF {
			break
		}
		w.Write(buf[:n])
	}
}

Client

package main

import (
	"net/http"
	"fmt"
	"io"
)

func main()  {
	resp,err:=http.Get("http://127.0.0.1:8005/index.go")
	if err!=nil {
		fmt.Print(err)
		return
	}
	defer resp.Body.Close()
	fmt.Println(resp.Status)
	fmt.Println(resp.StatusCode)
	fmt.Println(resp.Body)
	fmt.Println(resp.Header)
	buf:=make([]byte,4096)
	for  {
		n,err:=resp.Body.Read(buf)
		fmt.Print(string(buf[:n]))
		if err!=nil {
			if err==io.EOF {
				break
			} else {
				fmt.Print(err)
			}
		}
	}
}

相關推薦

使用Go語言實現http服務端指定路徑的檔案.

package main import ( "io" "net/http" ) func main() { http.HandleFunc("/", router) http.Listen

go語言實現http

Server package main import ( "net/http" "os" "io" ) func main() { http.HandleFunc("/",handle) http.ListenAndServe("127.0.0.1:8005

【區塊鏈Go語言實現】第一部分:區塊鏈基本原型

ont 構建 獲得 列表 append 檢查 世紀 正常 私有 0x00 介紹 區塊鏈(Blockchain)是21世紀最具革命性的技術之一,目前它仍處於逐漸成熟階段,且其發展潛力尚未被完全意識到。從本質上講,區塊鏈只是一種記錄的分布式數據庫。但它之所以獨特,是因為它並

go語言實現 tcp客戶端/服務端

tcpl sem close byte cpc cep 實現 lee n) / server.go /package main import ("bufio""fmt""net""time")

go語言實現udp客戶端/服務端

rom client nic exit nil 客戶 ddr close udp / server.go /package main import ("fmt""net""os") func checkError

go語言實現unix domain socket 客戶端/服務端

sock domain tin soc reader ted ips for urn /*server.go */package mainimport ( "bufio" "fmt" &quo

go語言實現簡單的聊天室

tcp協議 golang聊天室通常聊天室的架構分為服務器端和客戶端: 服務器端:接受來自於客戶端的連接請求並建立連接;所有客戶端的連接會放進連接池中,用於廣播消息; 客戶端:連接服務器;向服務器發送消息;接收服務器的廣播消息; 註意事項:某一個客戶端斷開連接後需要從連接池中摘除,並不再接收廣播消息;某一個客戶

go語言實現數組去重

bsp clas == 實現 int list div append func import ( "fmt" ) func main() { a := []int{2, 1, 2, 5, 6, 3, 4, 5, 2, 3, 9} z := Rm_

Go語言實現FastDFS分布式存儲系統WebAPI網關

net [] ima 分布式存 make type go web upload listen 前言   工作需要,第一次使用 Go 來實戰項目。   需求:采用 golang 實現一個 webapi 的中轉網關,將一些資源文件通過 http 協議上傳至 FastDFS

go語言實現類似java8的Stream

4.4 代碼 歸納 Go語言 浮點 print jdk 是我 遞歸 JDK8 Stream 是一個支持泛型和函數式數據流,使用起來非常強大方便。最近在學習 go 語言我就用 go 模仿了一下類似的功能,由於 go 對泛型、函數式的支持比較有限,感覺泛型和函數式這一塊實現起來

Go語言實現區塊鏈與加密貨幣-Part3(交易優化,單機模擬多節點通訊)

交易(二) 在這個系列文章的一開始,我們就提到了,區塊鏈是一個分散式資料庫。不過在之前的文章中,我們選擇性地跳過了“分散式”這個部分,而是將注意力都放到了“資料庫”部分。到目前為止,我們幾乎已經實現了一個區塊鏈資料庫的所有元素。今天,我們將會分析之前跳過的一些機制。而在本篇文章中,我們將

Go語言實現區塊鏈與加密貨幣-Part2(交易與地址,餘額翻倍漏洞)

準備工作: 安裝依賴包:$ go get golang.org/x/crypto/ripemd160 安裝失敗請檢視:https://blog.csdn.net/ak47000gb/article/details/79561358 交易 交易(transaction)是比特幣

Go語言實現區塊鏈與加密貨幣(用3臺計算機通過區域網模擬3個節點通訊)

本文要實現3臺計算機通過區域網模擬3個節點通訊。(windows環境下) 這是在上一步的基礎上修改而來的。 三個節點所扮演的角色分別是:中心節點、錢包節點、礦工節點 首先3臺計算機要通過區域網連線在一起(可以通過wifi等方式)。 注意要把各自的防火牆關掉。 可以用ping命令測試,互相間的

Go語言實現走迷宮

package main import ( "fmt" "os/exec" "os" "time" ) //定義全域性變數 var( //定義變數儲存R當前位置 currentRow = 1 currentCol = 1 //定義變數儲存迷宮出口位置(索引) endRow =

把二元查詢樹轉變成排序的雙向連結串列 Go 語言實現

題目: 輸入一棵二元查詢樹,將該二元查詢樹轉換成一個排序的雙向連結串列。 要求不能建立任何新的結點,只調整指標的指向。       10      /   \     6  14 &

go語言實現聊天室

go語言實現聊天室 聊天室分為服務端和客戶端。第一部分為服務端程式碼,第二部分為客戶端程式碼。 一、服務端程式碼 //chatroom server package main import ( "fmt" "net" ) //定義函式checkError,用來錯誤處理 fu

go語言實現非對稱加密——RSA加密解密的實現

版權宣告:本文為作者原創,如需轉載,請註明出處 https://blog.csdn.net/weixin_42940826 非對稱加密簡介 什麼是非對稱加密 非對稱加密,顧名思義,是相對於對稱加密的一種加密方法,對稱加密是指加密與解密使用的是同一把祕鑰,而非對稱加

Go語言10-http和mysql

http 程式設計 Go 原生支援http: import "net/http" Go 的http服務效能和nginx比較接近:就是說用Go寫的Web程式上線,程式前面不需要再部署nginx的Web伺服器,這裡省掉的是Web伺服器。如果伺服器上部署了多個Web應用,還是需要反向代理的,一般這也是ngin

Go語言基礎(十五)—— Go語言實現json資料檔案讀取與儲存

案例: package main import ( "os" "fmt" "encoding/json" "time" ) type Person2 struct { Name string Age int Sex string Hobby []string } fun

Go語言實現單向雜湊函式 —— MD5訊息摘要演算法、SHA256與224(Go語言實現

 MD5訊息摘要演算法 MD5訊息摘要演算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼雜湊函式,可以產生出一個128位(16位元組)的雜湊值(hash value),用於確保資訊傳輸完整一致。 Go語言實現方式一: packag