Ai
61 Star 660 Fork 311

ShirDon-廖显东/Go Web编程实战派源码

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
socket-tcp-server1.go 1.42 KB
一键复制 编辑 原始数据 按行查看 历史
ShirDon-廖显东 提交于 2021-01-19 21:02 +08:00 . commit
//++++++++++++++++++++++++++++++++++++++++
// 《Go Web编程实战派从入门到精通》源码
//++++++++++++++++++++++++++++++++++++++++
// Author:廖显东(ShirDon)
// Blog:https://www.shirdon.com/
// 仓库地址:https://gitee.com/shirdonl/goWebActualCombat
// 仓库地址:https://github.com/shirdonl/goWebActualCombat
//++++++++++++++++++++++++++++++++++++++++
package main
import (
"fmt"
_ "io"
"log"
"net"
)
func Server() {
// Listen函数创建的服务端
//tcp : 网络协议
//127.0.0.1:8088 / :8088 本机IP和端口
l, err := net.Listen("tcp", "127.0.0.1:8088")
if err != nil {
log.Fatal(err)
}
defer l.Close() //延时关闭listen
//循环等待客户端访问
for {
conn, err := l.Accept()
if err != nil {
log.Fatal(err)
}
fmt.Printf("访问客户端信息: con=%v 客户端ip=%v\n", conn, conn.RemoteAddr().String())
go handleConnection(conn)
}
}
//服务端处理从客户端接受的数据
func handleConnection(c net.Conn) {
defer c.Close() //关闭conn
for {
//1. 等待客户端通过conn发送信息
//2. 如果客户端没有wrtie[发送],那么协程就阻塞在这里
fmt.Printf("服务器在等待客户端%s 发送信息\n", c.RemoteAddr().String())
buf := make([]byte, 1024)
n, err := c.Read(buf)
if err != nil {
log.Fatal(err)
break
}
//3. 显示客户端发送的内容到服务器的终端
fmt.Print(string(buf[:n]))
}
}
func main() {
Server()
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/shirdonl/goWebActualCombat.git
git@gitee.com:shirdonl/goWebActualCombat.git
shirdonl
goWebActualCombat
Go Web编程实战派源码
1675db770ff5

搜索帮助