客户端代码:
注:go get github.com/lxn/walk
package main
import ( "github.com/lxn/walk" . "github.com/lxn/walk/declarative" "net" )
const ( IP = "127.0.0.1:8888" )
func main() { var mw *walk.MainWindow var uname, pwd *walk.LineEdit
(MainWindow{ AssignTo: &mw, Title: "织梦多站点管理系统", MinSize: Size{218, 170}, Size: Size{218, 170}, MaxSize: Size{218, 170}, Layout: VBox{},
Children: []Widget{
Label{ Text: "织梦多站点管理系统", Font: Font{ PointSize: 10, Family: "微软雅黑", }, },
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: "自动登陆", }, }, },
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 }
|
请发表评论