Home  >  Article  >  Backend Development  >  Golang function tcp, udp, http and websocket processing methods

Golang function tcp, udp, http and websocket processing methods

王林
王林Original
2023-05-20 16:40:361423browse

With the continuous development of Internet technology, network communication has become an essential modern skill. In this process, function (Function), as an efficient and flexible programming method, has become a tool favored by more and more programmers. Among these functions, the processing methods based on TCP, UDP, HTTP and WebSocket protocols are particularly important. Today, this article will focus on the Golang function processing methods under these four protocols.

1. Function processing method based on TCP protocol

TCP (Transmission Control Protocol) is a connection-oriented, reliable, byte stream-based transport layer protocol. In Golang, we can create a simple TCP server through the following code:

package main

import (
    "fmt"
    "net"
)

func main() {
    listener, err := net.Listen("tcp", "127.0.0.1:8080")
    if err != nil {
        fmt.Println("Error listening:", err.Error())
        return
    }

    for {
        conn, err := listener.Accept()
        if err != nil {
            fmt.Println("Error accepting:", err.Error())
            return
        }
        go handleRequest(conn)
    }
}

func handleRequest(conn net.Conn) {
    buf := make([]byte, 1024)
    for {
        _, err := conn.Read(buf)
        if err != nil {
            fmt.Println("Error reading:", err.Error())
            return
        }
        conn.Write([]byte("Hello, world!"))
    }
}

In the above code, we use the net package to create a TCP listener, and then use the Accept() method to wait for the client terminal connection. Next, we handle the connection in the handleRequest() function and send our response in the connection.

2. Function processing method based on UDP protocol

UDP (User Datagram Protocol) is a non-connection and unreliable transport layer protocol. In Golang, we can also easily create a simple UDP server, the code is as follows:

package main

import (
    "fmt"
    "net"
)

func main() {
    udpAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8080")
    if err != nil {
        fmt.Println("Error Resolving UDP address:", err.Error())
        return
    }

    conn, err := net.ListenUDP("udp", udpAddr)
    if err != nil {
        fmt.Println("Error Listening:", err.Error())
        return
    }
    defer conn.Close()

    for {
        buf := make([]byte, 1024)
        _, remoteAddr, err := conn.ReadFromUDP(buf)
        if err != nil {
            fmt.Println("Error Reading:", err.Error())
            continue
        }
        conn.WriteToUDP([]byte("Hello, world!"), remoteAddr)
    }
}

3. Function processing method based on HTTP protocol

HTTP (Hypertext Transfer Protocol) is An application layer protocol used to transfer data between web browsers and web servers. In Golang, we can use the net/http package in the standard library to create a simple HTTP server. The code is as follows:

package main

import (
    "fmt"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, world!")
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

In the above code, we define a handler() function to handle HTTP request, and use http.HandleFunc() in the main() function to specify our handler. Finally, we use the http.ListenAndServe() method to start our server.

4. Function processing method based on WebSocket protocol

WebSocket is a full-duplex protocol, usually used to implement instant communication functions, such as online games, instant chat, etc. In Golang, we can use the gorilla/websocket package to create a WebSocket server. The code is as follows:

package main

import (
    "net/http"

    "github.com/gorilla/websocket"
)

var upgrader = websocket.Upgrader{
    ReadBufferSize:  1024,
    WriteBufferSize: 1024,
}

func handler(w http.ResponseWriter, r *http.Request) {
    conn, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        return
    }
    defer conn.Close()

    for {
        _, message, err := conn.ReadMessage()
        if err != nil {
            return
        }
        conn.WriteMessage(websocket.TextMessage, []byte("Hello, world!"))
    }
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

In the above code, we use the gorilla/websocket package to create a WebSocket server and define handler( ) function to handle WebSocket connections. Finally, we use the http.HandleFunc() and http.ListenAndServe() methods to start our server.

Summary

Whether it is TCP, UDP, HTTP or WebSocket protocol, Golang provides a rich function library to help us quickly build servers and handle various network communications. By learning the above four protocols and Golang's processing methods, I believe you will be able to better understand functional programming and be able to use Golang more flexibly to implement various network applications.

The above is the detailed content of Golang function tcp, udp, http and websocket processing methods. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn