go開發桌面應用源碼_go Socket_golang Socket_golang開發桌面應用源碼_go客戶端服務端

客戶端代碼:git

注:go get github.com/lxn/walkgithub

package main服務器

import (
"github.com/lxn/walk"
. "github.com/lxn/walk/declarative"
"net"
)socket

const (
IP = "127.0.0.1:8888"
)tcp

func main() {
var mw *walk.MainWindow
var uname, pwd *walk.LineEditorm

(MainWindow{
AssignTo: &mw,
Title: "織夢多站點管理系統",
MinSize: Size{218, 170},
Size: Size{218, 170},
MaxSize: Size{218, 170},
Layout: VBox{},ip

Children: []Widget{get

Label{
Text: "織夢多站點管理系統",
Font: Font{
PointSize: 10,
Family: "微軟雅黑",
},
},string

LineEdit{
AssignTo: &uname,
MinSize: Size{0, 25},
CueBanner: "用戶名",
Font: Font{
PointSize: 10,
Family: "微軟雅黑",
},
},
LineEdit{
AssignTo: &pwd,
MinSize: Size{0, 25},
PasswordMode: true,
CueBanner: "密碼",
Font: Font{
PointSize: 10,
Family: "微軟雅黑",
},
},
HSplitter{
Children: []Widget{
CheckBox{
Text: "記住密碼",
},
CheckBox{
Text: "自動登錄",
},
},
},it

HSplitter{
Children: []Widget{
PushButton{

Text: "登錄",
MinSize: Size{0, 30},
OnClicked: func() {

if uname.Text() == "" {
walk.MsgBox(mw, "錯誤", "請輸入您的用戶名!", walk.MsgBoxIconInformation)
return
} else if pwd.Text() == "" {
walk.MsgBox(mw, "錯誤", "請輸入您的密碼!", walk.MsgBoxIconInformation)
return
}

//連接socket發送數據
connectServer(mw, uname.Text(), pwd.Text())

},
},
PushButton{
Text: "取消",
MinSize: Size{0, 30},
OnClicked: func() { mw.Close() },
},
},
},
},
}).Run()
}

//連接socket發送數據
func connectServer(mw *walk.MainWindow, uname, pwd string) {

buf := make([]byte, 1024)

connect, err := net.Dial("tcp", IP)
if err != nil {
walk.MsgBox(mw, "錯誤", "服務器鏈接錯誤!", walk.MsgBoxIconInformation)
return
}
connect.Write([]byte(uname + "," + pwd))
c, err := connect.Read(buf)
walk.MsgBox(mw, "錯誤", string(buf[0:c]), walk.MsgBoxIconInformation)
defer connect.Close()

}

 

 

服務端代碼:

package main

import (
"fmt"
"net"
)

const (
ADDR = "127.0.0.1"
PORT = 8888
)

var exit chan bool

func main() {

exit = make(chan bool)

ip := net.ParseIP(ADDR)
adr := net.TCPAddr{ip, PORT, ""}

go func() {

listener, err := net.ListenTCP("tcp", &adr)
if err != nil {
fmt.Println("服務器啓動失敗!")
exit <- true
return
}

for {
cdata := make([]byte, 1024)
client, err := listener.AcceptTCP()
if err != nil {
fmt.Println(err.Error())
continue
}
fmt.Println(client.RemoteAddr().String())
c, err := client.Read(cdata)
if err != nil {
fmt.Println(err.Error())
}
fmt.Println(string(cdata[0:c]))
client.Write([]byte("你好客戶端!" + string(cdata[0:c])))
client.Close()

}

}() <-exit}

相關文章
相關標籤/搜索