package main
import (
"net"
"fmt"
"bytes"
)
func main() {
//创建socket
Listener, err := net.Listen("tcp", "127.0.0.1:8888")
if err != nil {
fmt.Println("Listener Err:", err)
return
}
fmt.Println("监听套接字创建成功")
defer Listener.Close()
//创建连接
for{
conn, err := Listener.Accept()
if err != nil {
fmt.Println("Accept Err:", err)
return
}
fmt.Printf("%v创建连接成功\n",conn.RemoteAddr())
defer conn.Close()
go func() {
//创建一个buf
buf := make([]byte, 4096)
//读
for{
n, err := conn.Read(buf)
if n==0{
fmt.Printf("系统检测到客户端%v已关闭",conn.RemoteAddr())
return
}
/*if string(buf[:n])=="exit\n"||string(buf[:n])=="exit\r\n"{
fmt.Printf("系统检测到客户端%v已关闭",conn.RemoteAddr())
return
}*/
if err!=nil {
fmt.Println("Read Err:",err)
return
}
fmt.Printf("Server读到:%s",buf[:n])
//操作
str:=bytes.ToUpper(buf[:n])
fmt.Printf("对n进行操作结果:%s",str)
//写
n,err=conn.Write([]byte(str))
if err!=nil {
fmt.Println("Write Err:",err)
return
}
fmt.Printf("Server 写入:%s",str)
}
}()
}
}
tcp-cs服务器端模型,读取客户端IP,并发执行读,处理读入数据,并写回客户端的操作