多線程服務端和客戶端通信

         golang示例多線程服務端和客戶端通信

package main


import (
	"net"
	"fmt"
	"time"
)

func server(){
	listen_sock, err := net.Listen("tcp", "0.0.0.0:8888")
	if err != nil {
		fmt.Println("listen error")
		return;
	}

	defer listen_sock.Close()

	conn, err := listen_sock.Accept()
	if err != nil {
		fmt.Println("accept error")
		return;
	}

	defer conn.Close()

	buf := make([]byte, 100)
	for(true){
		n, err := conn.Read(buf)
		if err != nil {
			fmt.Println("conn closed")
			return
		}
		fmt.Println("msg size:", n, string(buf[0:n]))
	}
}


func client(){
	conn, err := net.Dial("tcp", "127.0.0.1:8888")
	if err != nil {
		fmt.Println("check server")
		return
	}

	defer conn.Close()

	for(true){
		s := []byte("abc")
		conn.Write(s)
		time.Sleep(1 * time.Second)
	}
}


func main(){
	go server()
	go client()

	time.Sleep(10 * time.Minute)
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章