客户端代码
package main
import (
"fmt"
"net"
"os"
"bufio"
)
func main(){
fmt.Println("客户端启动……")
conn,err:=net.Dial("tcp","127.0.0.1:8888")
if err!=nil{
fmt.Println("客户端连接服务器失败,错误信息:",err)
return
}
fmt.Println("客户端连接服务器成功,连接信息:",conn)
reader := bufio.NewReader(os.Stdin)
for{
str,err := reader.ReadString('\n')
if err != nil {
fmt.Println("客户端发送信息失败,错误信息:",err)
return
}
n,err := conn.Write([]byte(str))
if err != nil {
fmt.Println("客户端发送信息失败,错误信息:",err)
return
}
fmt.Println("客户端发送信息成功,发送的字节数:",n)
}
}
服务器代码
package main
import (
"fmt"
"net"
)
func process(conn net.Conn){
defer conn.Close()
for{
buf:=make([]byte,1024)
n,err:=conn.Read(buf)
if err!=nil{
fmt.Println("客户端断开连接,错误信息:",err)
return
}
fmt.Println("服务器收到信息:",string(buf[:n]))
}
}
func main(){
fmt.Println("服务器启动……")
lisnet,err:=net.Listen("tcp","127.0.0.1:8888")
if err!=nil{
fmt.Println("服务器监听失败,错误信息:",err)
return
}
fmt.Println("服务器监听成功,监听信息:",lisnet)
for{
conn,err:=lisnet.Accept()
if err!=nil{
fmt.Println("服务器接收客户端连接失败,错误信息:",err)
continue
}
fmt.Printf("服务器接收客户端连接成功,连接信息:%v,接收到的客户端信息:%v\n",conn,conn.RemoteAddr().String())
go process(conn)
}
}
客户端运行效果
客户端启动……
客户端连接服务器成功,连接信息: &{{0xc00009e288}}
我看新闻说有人在饮水机里下毒
客户端发送信息成功,发送的字节数: 44
毒死了成绩好的学生
客户端发送信息成功,发送的字节数: 29
妈你放心,我成绩差,没事的
客户端发送信息成功,发送的字节数: 41
我是在警醒你千万别给同学下毒
客户端发送信息成功,发送的字节数: 44
[汗][汗][汗]
客户端发送信息成功,发送的字节数: 17
服务器运行效果
服务器启动……
服务器监听成功,监听信息: &{0xc000072288 {<nil> 0 {false 0 0 0} 0}}
服务器接收客户端连接成功,连接信息:&{{0xc000072508}},接收到的客户端信息:127.0.0.1:59990
服务器收到信息: 我看新闻说有人在饮水机里下毒
服务器收到信息: 毒死了成绩好的学生
服务器收到信息: 妈你放心,我成绩差,没事的
服务器收到信息: 我是在警醒你千万别给同学下毒
服务器收到信息: [汗][汗][汗]