/*
简单并发tcp服务端
*/
package main
import (
"strings"
"fmt"
"net"
)
func HandleConn(conn net.Conn){
//获取地址
addr:=conn.RemoteAddr().String()
fmt.Println(addr," connect sucessful!!!")
//放在return上面,不然没有执行到此return了,就不会执行
defer conn.Close()
//接收用户的请求
buf:=make([]byte,1024)
for{
n,err3:=conn.Read(buf)
if err3!=nil{
fmt.Println("err3",err3)
return
}
fmt.Printf("[%s]:%s\n",addr,string(buf[:n]))
if "exit"==string(buf[:n-2]){//04编写客户端输入时默认ent换行带有 \r\n
fmt.Println(addr,"exit")
return
}
//把数据转换为大写,再发给用户
conn.Write([]byte(strings.ToUpper(string(buf[:n]))))
}
}
func main(){
//监听
listener,err:=net.Listen("tcp","127.0.0.1:8000")
if err!=nil{
fmt.Println("err=",err)
return
}
//阻塞等待用户连接
for{
conn,err2:=listener.Accept()
if err2!=nil{
fmt.Println("err2",err2)
return
}
go HandleConn(conn)
}
//结束时关闭监听
defer listener.Close()
}
6.3 go 简单并发服务器
猜你喜欢
转载自blog.csdn.net/h4241778/article/details/105499977
今日推荐
周排行