高并发C/S的TCP版本golang实现
前面一篇文章写到的实现服务器只能连接一个客户端,没有发挥出go语言的协程特性,所以又可用如下方法实现高并发,多个客户端连接来完成:
package mainimport ("fmt""net""strings"
)// 服务器Read读客户端,返回0 说明对端关闭
func main() {// 创建监听套接字listener, err := net.Listen("tcp", "127.0.0.1:8001")if err != nil {fmt.Println("listen err", err)return}defer listener.Close()for {// 监听客户端连接请求fmt.Println("服务器等待客户端连接")conn, err := listener.Accept()if err != nil {fmt.Println("listener.Accept err", err)return}// 具体完成服务器和客户端的数据通信go HandlerConnect(conn)}}func HandlerConnect(conn net.Conn) {defer conn.Close()// 获取连接的客户端Addraddr := conn.RemoteAddr()fmt.Println(addr, "客户端成功连接---")// 循环读取客户端发送数据buf := make([]byte, 4096)for {n, err := conn.Read(buf)if n == 0 {fmt.Println("服务器检测到客户端已关闭,断开连接")// 这里关闭的只是go线程,main线程还是在for循环的return}if err != nil {fmt.Println("conn Read err", err)return}fmt.Println("服务器读到数据:", string(buf[:n]))// 小写转大写回发conn.Write([]byte(strings.ToUpper(string(buf[:n]))))}}
高并发C/S的TCP版本golang实现相关推荐
- 疯狂的java 目录_疯狂创客圈 JAVA 高并发 总目录
无编程不创客,疯狂创客圈,一大波编程高手正在交流.学习中! 疯狂创客圈: JAVA 高并发 研习社群, QQ群:104131248(已满) 236263776 (请加此群) 疯狂创客圈 经典 ...
- Golang适合高并发场景的原因分析
典型的两个现实案例: 我们先看两个用Go做消息推送的案例实际处理能力. 360消息推送的数据: 16台机器,标配:24个硬件线程,64GB内存 Linux Kernel 2.6.32 x86_64 ...
- golang高并发的理解
转载地址:https://www.cnblogs.com/feixiangmanon/p/10504081.html 前言 GO语言在WEB开发领域中的使用越来越广泛,Hired 发布的<201 ...
- Golang的高并发
Golang的高并发 Golang的调度器有三个核心的元素: 物理处理器 逻辑处理器 goroutine 物理处理器更接近cpu核的概念,主要包括 调度线程来运行. 分配逻辑处理器的基础, 每个物理处 ...
- Golang适合高并发场景的原理
典型的两个现实案例: 我们先看两个用Go做消息推送的案例实际处理能力 360消息推送的数据: 16台机器,标配:24个硬件线程,64GB内存 Linux Kernel 2.6.32 x86_64 ...
- Golang语言快速上手到综合实战(Go语言、Beego框架、高并发聊天室、豆瓣电影爬虫) 下载
下载Golang语言快速上手到综合实战(Go语言.Beego框架.高并发聊天室.豆瓣电影爬虫) 下载地址:请加QQ:397245854 Go是Google开发的一种编译型,可并行化,并具有垃圾回收功能 ...
- 27.Linux网络编程socket变成 tcp 高并发 线程池 udp
好,咱们开始上课了,从今天开始咱们连续讲 8 天的,网络编程这个还是在linux环境下去讲,咱们先看一下咱们这 8 天都讲什么东西,跟大家一块来梳理一下,你先有个大概的印象,这些你也不要记,那么网络编 ...
- PgSQL · 应用案例 · 阿里云 RDS PostgreSQL 高并发特性 vs 社区版本
2019独角兽企业重金招聘Python工程师标准>>> 摘要: 背景 进程模型数据库,需要为每个会话指派独立的进程与之服务,在连接数非常多,且大都是活跃连接时,进程调度浪费或引入的开 ...
- tcp/udp高并发和高吐吞性能测试工具
在编写一个网络服务的时候都比较关心这个服务能达到多少并发连接,而在这连接的基础上又能达到一个怎样的交互能力.编写服务已经是一件很花力气的事情,而还要去编写一个能够体现结果的测试工具就更加消耗工作时间. ...
最新文章
- 17日南土所蒋瑀霁报告:红壤团聚体尺度养分转化的生物学过程(线虫-微生物互作机制)...
- php中rsort,php数组函数排序之rsort()
- AFNetworking和ASIHTTPRequest的比较
- 【LeetCode从零单排】No15	 3Sum
- SAP Spartacus HTML Tags 实现介绍
- 国外少儿PYTHON编程书推荐
- 要不要赶个时髦,去建设一个「 中台 」?
- 信息学奥赛C++语言:素数的判定
- (转)WIN7更改用户名访问共享文件夹
- 学习MySQL:使用SELECT语句从MySQL服务器查询数据
- java聊天室项目_java聊天室的项目的设计书.doc
- antd-vue 划上表格内容显示气泡框及提示内容
- 2021-2027全球与中国Al2O3氧化铝陶瓷基板白板市场现状及未来发展趋势
- sqrt方法复杂度探讨
- linux 查看dhcp dns,RHEL6 DNS+DHCP+DDNS
- 为了适应云数据库mySQL产品_金山云数据库RDSMySQL的产品功能大解析
- 面试要点之——23种设计模式及其应用场景
- 译文:在闭包中使用循环变量是有害的
- npm scripts
- html各种弹出框和提示框
热门文章
- Java黑皮书课后题第7章:7.4(分析成绩)编写一个程序,读入个数不确定的考试分数,并且判断有多少个分数是大于或等于平均分,多少个分数是低于平均分的。输入一个负数表示输入结束。假设最高分是100
- mysql粘贴数据_Navicat 如何复制粘贴数据
- 上帝与集合的正确用法(bzoj3884)
- PHP通过__call实现简单的AOP(主事务后的其他操作)比如前置通知,后置通知
- arp_annouce=2详解
- Tomcat与Jre绿色环境配置(生产环境)
- MySQL数据库服务器 主从配置
- 修改web.config
- 简单工厂之简单模型(uml)
- 运算符之:5、位运算符(7个)