1. 程式人生 > 實用技巧 >go協程聊天室

go協程聊天室

服務端:

package main

import (
    "fmt"
    "net"
)

func process(conn net.Conn){
    defer  conn.Close();
    for {
        fmt.Printf("伺服器在等待客戶端%s輸入資訊",conn.RemoteAddr().String());
        buf:=make([]byte,1024);
        n,err:=conn.Read(buf);//如果沒有發信息一致等著
        if err !=nil {
            return;
            fmt.Println(
"error"); } content:=string(buf[:n]); fmt.Print(content); } } func main(){ fmt.Println("伺服器啟動...."); listen,err:=net.Listen("tcp","0.0.0.0:8888"); if err != nil { fmt.Println("listen err=",err); } defer listen.Close(); for{ fmt.Println(
"等待客戶端來進行連線..."); conn,err:= listen.Accept(); if err != nil { fmt.Println("conn is error"); ipaddr:=conn.RemoteAddr().String(); fmt.Printf("accept() suc con =%v",ipaddr); } go process(conn); } }

客戶端:

package main

import (
    
"bufio" "fmt" "net" "os" ) func main(){ conn,err:=net.Dial("tcp","127.0.0.1:8888"); if err!= nil { fmt.Println("client dial err",err); return; } //給客戶端傳送資料 reader:=bufio.NewReader(os.Stdin);//代表標準輸入 content,err:=reader.ReadString('\n'); if err != nil { fmt.Printf("read is error"); } n,err:=conn.Write([]byte(content)); if err !=nil { fmt.Println("send is error"); } fmt.Println(n); }