centos

CentOS中Golang如何进行网络通信

小樊
43
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
看了该问题的人还看了