溫馨提示×

CentOS中Golang如何進行網絡通信

小樊
59
2025-04-10 14:33:02
欄目: 編程語言

在CentOS系統中,使用Golang進行網絡通信主要依賴于其標準庫"net"和"net/http"。以下是一些基本的網絡通信示例:

  1. 使用TCP進行客戶端和服務器之間的通信:

TCP客戶端示例:

package main

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

func main() {
	conn, err := net.Dial("tcp", "example.com:80")
	if err != nil {
		panic(err)
	}
	defer conn.Close()

	_, err = conn.Write([]byte("GET / HTTP/1.0\r\n\r\n"))
	if err != nil {
		panic(err)
	}

	response, err := ioutil.ReadAll(conn)
	if err != nil {
		panic(err)
	}

	fmt.Println(string(response))
}

TCP服務器示例:

package main

import (
	"bufio"
	"fmt"
	"net"
)

func main() {
	listener, err := net.Listen("tcp", ":8080")
	if err != nil {
		panic(err)
	}
	defer listener.Close()

	for {
		conn, err := listener.Accept()
		if err != nil {
			panic(err)
		}

		go handleRequest(conn)
	}
}

func handleRequest(conn net.Conn) {
	defer conn.Close()

	reader := bufio.NewReader(conn)
	for {
		line, err := reader.ReadString('\n')
		if err != nil {
			break
		}

		fmt.Print(line)
	}
}
  1. 使用HTTP進行客戶端和服務器之間的通信:

HTTP客戶端示例:

package main

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

func main() {
	resp, err := http.Get("http://example.com")
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}

	fmt.Println(string(body))
}

HTTP服務器示例:

package main

import (
	"fmt"
	"net/http"
)

func main() {
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprintf(w, "Hello, World!")
	})

	err := http.ListenAndServe(":8080", nil)
	if err != nil {
		panic(err)
	}
}

這些示例展示了如何在CentOS系統中使用Golang進行基本的網絡通信。你可以根據自己的需求修改這些示例,實現更復雜的功能。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女