客户端代码
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 服务器 收到信息: 我看新闻说有人在饮水机里下毒服务器 收到信息: 毒死了成绩好的学生服务器 收到信息: 妈你放心,我成绩差,没事的服务器 收到信息: 我是在警醒你千万别给同学下毒服务器 收到信息: [ 汗] [ 汗] [ 汗]