Java文件選擇對話框JFileChooser應用詳解。本站提示廣大學習愛好者:(Java文件選擇對話框JFileChooser應用詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是Java文件選擇對話框JFileChooser應用詳解正文
本文實例講述了Go說話辦事器開辟之簡略單純TCP客戶端與辦事端完成辦法。分享給年夜家供年夜家參考。詳細完成辦法以下:
Go說話具有壯大的辦事器開辟支撐,這裡示范了最基本的辦事器開辟:經由過程TCP協定完成客戶端與辦事器的通信。
一 辦事端,為每一個客戶端新開一個goroutine
func ServerBase() {
fmt.Println("Starting the server...")
//create listener
listener, err := net.Listen("tcp", "192.168.1.27:50000")
if err != nil {
fmt.Println("Error listening:", err.Error())
return
}
// listen and accept connections from clients:
for {
conn, err := listener.Accept()
if err != nil {
fmt.Println("Error accepting:", err.Error())
return
}
//create a goroutine for each request.
go doServerStuff(conn)
}
}
func doServerStuff(conn net.Conn) {
fmt.Println("new connection:", conn.LocalAddr())
for {
buf := make([]byte, 1024)
length, err := conn.Read(buf)
if err != nil {
fmt.Println("Error reading:", err.Error())
return
}
fmt.Println("Receive data from client:", string(buf[:length]))
}
}
二 客戶端 銜接辦事器,並發送數據
func ClientBase() {
//open connection:
conn, err := net.Dial("tcp", "192.168.1.27:50000")
if err != nil {
fmt.Println("Error dial:", err.Error())
return
}
inputReader := bufio.NewReader(os.Stdin)
fmt.Println("Please input your name:")
clientName, _ := inputReader.ReadString('\n')
inputClientName := strings.Trim(clientName, "\n")
//send info to server until Quit
for {
fmt.Println("What do you send to the server? Type Q to quit.")
content, _ := inputReader.ReadString('\n')
inputContent := strings.Trim(content, "\n")
if inputContent == "Q" {
return
}
_, err := conn.Write([]byte(inputClientName + " says " + inputContent))
if err != nil {
fmt.Println("Error Write:", err.Error())
return
}
}
}
注:因為LiteIDE不支撐同時運轉多個法式,所以須要在終端經由過程 go run 敕令來同時運轉辦事端和(一個或多個)客戶端,可不雅察到辦事器對並發拜訪的支撐。
願望本文所述對年夜家的Go說話法式設計有所贊助。