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,表示退出程序。
*/

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值