Go 언어로 네트워크 프로그래밍 기능을 배우고 WebSocket 통신 구현
소개
Go 언어는 강력한 프로그래밍 언어로 네트워크 프로그래밍 분야에서 널리 사용됩니다. 풍부한 네트워크 프로그래밍 기능과 라이브러리를 제공하여 개발자가 다양한 네트워크 통신 기능을 쉽게 구현할 수 있습니다. 이 기사에서는 Go 언어에서 일반적으로 사용되는 네트워크 프로그래밍 기능을 소개하고 예제를 결합하여 WebSocket 통신을 구현합니다.
1. 네트워크 프로그래밍 기능
net.Listen
함수 서명: func Listen(network, address string)(Listener, error)
목적: 지정된 네트워크 주소를 듣고 Listener 객체를 반환합니다.
예:
listener, err := net.Listen("tcp", "127.0.0.1:8080") if err != nil { log.Fatal(err) } defer listener.Close()
Accept
함수 서명: func (l *TCPListener) Accept() (Conn, error)
목적: 연결 요청을 수락하고 Conn 개체를 반환합니다.
예:
conn, err := listener.Accept() if err != nil { log.Fatal(err) } defer conn.Close()
gorilla/websocket
라이브러리를 제공합니다. gorilla/websocket
库来方便地实现WebSocket通信功能。二、实现WebSocket通信
安装gorilla/websocket
gorilla/websocket
라이브러리 설치go get -u github.com/gorilla/websocket
package main import ( "log" "net/http" "github.com/gorilla/websocket" ) var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } func websocketHandler(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Fatal(err) } defer conn.Close() for { messageType, message, err := conn.ReadMessage() if err != nil { log.Println(err) break } log.Printf("Received message: %s ", message) if err := conn.WriteMessage(messageType, message); err != nil { log.Println(err) break } } } func main() { http.HandleFunc("/websocket", websocketHandler) log.Fatal(http.ListenAndServe(":8080", nil)) }
클라이언트 -side code
package main import ( "log" "net/url" "github.com/gorilla/websocket" ) func main() { u := url.URL{Scheme: "ws", Host: "localhost:8080", Path: "/websocket"} conn, _, err := websocket.DefaultDialer.Dial(u.String(), nil) if err != nil { log.Fatal(err) } defer conn.Close() for i := 0; i < 5; i++ { message := []byte("Hello from client") if err := conn.WriteMessage(websocket.TextMessage, message); err != nil { log.Fatal(err) } _, receivedMessage, err := conn.ReadMessage() if err != nil { log.Fatal(err) } log.Printf("Received message from server: %s", receivedMessage) } }🎜🎜 위의 두 코드 파일을 실행하여 WebSocket 프로토콜을 기반으로 클라이언트와 서버 간의 통신을 구현합니다. 클라이언트는 서버에 메시지를 보내고, 서버로부터 메시지를 다시 받는 과정을 5번 반복합니다. 🎜🎜요약🎜이 기사에서는 Go 언어에서 일반적으로 사용되는 네트워크 프로그래밍 기능을 소개하고 예제를 통해 WebSocket 통신을 구현합니다. 이러한 지식을 학습함으로써 우리는 이를 더 잘 이해하고 실제 네트워크 프로그래밍에 적용할 수 있습니다. 웹 애플리케이션을 개발하든 다른 네트워크 통신 시나리오를 개발하든 이러한 네트워크 프로그래밍 기능을 익히면 개발 효율성이 크게 향상됩니다. 독자들이 학습을 통해 Go 언어의 네트워크 프로그래밍 기능을 더욱 깊이 이해하고 실제 프로젝트에 유연하게 적용할 수 있기를 바랍니다. 🎜
위 내용은 Go 언어로 네트워크 프로그래밍 기능을 배우고 WebSocket 통신을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!