TCP-服务器监听

TCP-服务器监听package main
import (
“fmt”
“net”
)
func process(conn net.Conn) {
//这⾥我们循环的接收客户端发送数据
defer conn.Close()//关闭conn
for{
//创建⼀个新的切⽚
buf := make([]byte,1024)
/
/conn.Read(buf)
//1.等待客户端通过conn发送信息
//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,表⽰退出程序。
*/

本文发布于:2024-09-21 19:05:34,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/516677.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:客户端   链接   发送   数据   等待   接收   服务器端
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议