Cara membangunkan aplikasi sembang mudah menggunakan bahasa Go
Dengan perkembangan pesat Internet, aplikasi sembang telah menjadi sangat diperlukan dalam kehidupan seharian manusia. nyawa hilang sebahagian. Sebagai bahasa pengaturcaraan yang pantas, boleh dipercayai dan cekap, bahasa Go semakin digemari oleh pembangun. Artikel ini akan memperkenalkan cara membangunkan aplikasi sembang mudah menggunakan bahasa Go.
1 Gambaran Keseluruhan Projek
Kami akan menggunakan bahasa Go untuk menulis aplikasi sembang mudah Pengguna boleh menghantar mesej kepada pengguna lain melalui aplikasi dan menerima mesej yang dihantar oleh pengguna lain. maklumat. Aplikasi sembang kami akan berkomunikasi berdasarkan protokol TCP.
2. Penyediaan projek
Sebelum kita mula menulis kod, kita perlu memasang persekitaran pembangunan bahasa Go. Anda boleh memuat turun pakej pemasangan dari https://golang.org/dl/ dan ikut arahan untuk memasangnya.
Selepas pemasangan selesai, kami boleh mengesahkan sama ada pemasangan berjaya melalui baris arahan Buka tetingkap baris arahan dan masukkan arahan berikut:
go version
Jika versi. nombor bahasa Go dipaparkan, ini bermakna Pemasangan berjaya.
3. Tulis kod
Buat direktori baharu, namakannya chatapp, dan kemudian buat fail bernama main.go dalam direktori. Kami akan menulis kod aplikasi sembang kami dalam fail ini.
Pertama, import pustaka standard bahasa Go dan dependensi yang diperlukan untuk aplikasi sembang:
package main import ( "bufio" "fmt" "log" "net" "os" "strings" )
var ( clients = make(map[string]net.Conn) messages = make(chan string) entering = make(chan net.Conn) leaving = make(chan net.Conn) allOnline = make(chan string) )
func handleConnection(conn net.Conn) { entering <- conn scanner := bufio.NewScanner(conn) for scanner.Scan() { messages <- scanner.Text() } leaving <- conn } func handleMessages() { for { select { case msg := <-messages: for _, conn := range clients { fmt.Fprintln(conn, msg) } case conn := <-entering: clients[conn.RemoteAddr().String()] = conn allOnline <- fmt.Sprintf("User %s joined the chat.", conn.RemoteAddr().String()) case conn := <-leaving: delete(clients, conn.RemoteAddr().String()) allOnline <- fmt.Sprintf("User %s left the chat.", conn.RemoteAddr().String()) } } } func listenForMessages() { scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { messages <- scanner.Text() } } func listenForCommands() { scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { command := scanner.Text() if strings.HasPrefix(command, "/list") { fmt.Println("Online users:") for client := range clients { fmt.Println(client) } } else if command == "/exit" { os.Exit(0) } else { fmt.Println("Unknown command:", command) } } }
func main() { log.Println("Starting chat server...") go handleMessages() listener, err := net.Listen("tcp", ":8080") if err != nil { log.Fatal(err) } defer listener.Close() go listenForMessages() go listenForCommands() for { conn, err := listener.Accept() if err != nil { log.Println(err) continue } go handleConnection(conn) } }
go run main.go
telnet localhost 8080
Atas ialah kandungan terperinci Bagaimana untuk membangunkan aplikasi sembang mudah menggunakan bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!