TCP-服务器监听package main
import (
“fmt”
“net”
)
func process(conn net.Conn) {
defer conn.Close()//关闭conn
for{
//创建⼀个新的切⽚
buf := make([]byte,1024)
/
/conn.Read(buf)
//2.如果客户端没有wrtie[发送],那么协程就阻塞在这⾥。
//fmt.Printf(“服务器在等待客户端%s 发送信息\n”,conn.RemoteAdder().String()) fmt.Println(“服务器在等待客户端%s 发送信息”+conn.RemoteAddr().String())
n,err:=conn.Read(buf)//从conn读取
if err !=nil{//io.EOF
fmt.Printf(“服务器的Read err”,err)
return //
}
//3.显⽰客户端发送的内容到服务器的终端
fmt.Print(string(buf[:n]))
抗菌药物}
}
/*
tcp socket编程的快速⼊门
服务端的处理流程
1)监听端⼝
输油管线
2)接收客户端的tcp链接,建⽴客户端和服务器端的链接 3)创建goroutine,处理该链接的请求(通常客户端会通过链接发送请求包)
农业生产指数客户端的处理流程
1)建⽴于服务端的链接
2)发送请求数据,接收服务器端返回的结果数据
3)关闭链接
*/
//做⽹络socket开发时,net宝⾏有我们需要所有的⽅法和函数
func main(){
fmt.Println(“服务器开始监听…”)
//net.Listen(“tcp”,“0.0.0.0:8888”)
//1.tcp表⽰使⽤⽹络协议是tcp
//2.0.0.0.0:8888表⽰在本地监听8888端⼝
listen,err := net.Listen(“tcp”,“0.0.0.0:8888”)
if err !=nil{//如果err不等空,(如果监听失败了,打印错误,)
fmt.Println(“listen err”,err)
报刊征订return
}
defer listen.Close()//延时关闭listen
//循环等待客户端来链接我
for{
//等待客户端链接
fmt.Println(“等待客户端来链接…”)
conn,err :=listen.Accept()//conn是⼀个接⼝,接⼝包含各种类型
if err!=nil {//如果err不等空,打印Accept的错误
fmt.Println(“Accept()err=”, err)
}else {//另外⼀个A客户端成功了
fmt.Printf(“Accept() suc con=%v\n”,conn,conn.RemoteAddr().String()) }
//这⾥准备⼀个协程,为客户端服务
go process(conn)
登封教研网
}
fmt.Printf(“listen suc=%v\n”,listen)//监听成功
//fmt.Printf(“listen suc=%v\n”,listen)
}
//telnet是来测试是否来链接的。⽐如telnet.www
//举例客户端A、B、服务端
山火/*
1)编⼀些⼀个客户端端程序,能连接到服务器端的8888端⼝
2)客户端可以发送但⾏数据,然后就退出
3)能通过终端输⼊数据(输⼊⼀⾏发送⼀⾏),并发送给服务器端⼝
4)在终端输⼊exit,表⽰退出程序。
*/