go代码很简单 就可以实现简单的聊天
server.go
package main
import (
"fmt";"net"
)
const (
ip = ""
port = 3333
)
func main() {
listen,err := net.ListenTCP("tcp", &net.TCPAddr{net.ParseIP(ip), port, ""})
if err != nil {
fmt.Println("监听端口失败:", err.Error())
return
}
fmt.Println("已初始化连接,等待客户端连接...")
Server(listen)
}
func Server(listen *net.TCPListener) {
for {
conn, err := listen.AcceptTCP()
if err != nil {
fmt.Println("接受客户端连接异常:", err.Error())
continue
}
fmt.Println("客户端连接来自:", conn.RemoteAddr().String())
defer conn.Close()
go func() {
data := make([]byte, 128)
for {
i, err := conn.Read(data)
fmt.Println("客户端发来数据:", string(data[0:i]))
if err != nil {
fmt.Println("读取客户端数据错误:", err.Error())
break
}
conn.Write([]byte{'f', 'i', 'n', 'i', 's', 'h'})
}
}()
}
}
client.go
package main
import (
"fmt"
"net"
)
const (
addr = "127.0.0.1:3333"
)
func main() {
conn, err := net.Dial("tcp", addr)
if err != nil {
fmt.Println("连接服务端失败:", err.Error())
return
}
fmt.Println("已连接服务器")
defer conn.Close()
Client(conn)
}
func Client(conn net.Conn) {
sms := make([]byte, 128)
for {
fmt.Print("请输入要发送的消息:")
_, err := fmt.Scan(&sms)
if err != nil {
fmt.Println("数据输入异常:", err.Error())
}
conn.Write(sms)
buf := make([]byte, 128)
c, err := conn.Read(buf)
if err != nil {
fmt.Println("读取服务器数据异常:", err.Error())
}
fmt.Println(string(buf[0:c]))
}
}
$ ./server
已初始化连接,等待客户端连接...
客户端连接来自: 127.0.0.1:50517
客户端发来数据: nada
客户端发来数据: xxx
客户端连接来自: 127.0.0.1:50522
客户端发来数据: asdada
客户端发来数据:
读取客户端数据错误: EOF
客户端连接来自: 127.0.0.1:50529
客户端发来数据: asdfasdfads
客户端发来数据: fas
客户端发来数据: d
客户端发来数据: fa
客户端发来数据: dsfa