当前位置: 首页 > news >正文

曹县做网站建设百分百营销软件官网

曹县做网站建设,百分百营销软件官网,网站头部导航样式,提供做网站公司有哪些使用Go快速开发TCP公共服务 文章目录 使用Go快速开发TCP公共服务一、前言二、实现思路三、源码四、测试使用五、最后 一、前言 之前使用的公共TCP服务无法使用了,想了一下整个实现原理不是很复杂,就利用Go快速开发了一个,利用公网服务器可以…

使用Go快速开发TCP公共服务

文章目录

  • 使用Go快速开发TCP公共服务
    • 一、前言
    • 二、实现思路
    • 三、源码
    • 四、测试使用
    • 五、最后

一、前言

之前使用的公共TCP服务无法使用了,想了一下整个实现原理不是很复杂,就利用Go快速开发了一个,利用公网服务器可以快速部署起来。

二、实现思路

在不考虑多用户使用,数据存储的情况下,总体实现思路比较简单:1、tcp服务接收tcp客户端消息;2、http服务端共享tcp服务端接收到的消息并通过接口方式提供给前端获取。提供给前端调用的方式参考了:实时通信的服务器推送机制 EventSource(SSE) (https://blog.csdn.net/DisMisPres/article/details/130539861)。

三、源码

服务端程序tcp_http_server.go:

package mainimport ("bufio""fmt""gopkg.in/antage/eventsource.v1""log""net""net/http""time"
)var recvStr string// TCP Server端测试
// 处理函数
func process(conn net.Conn) {defer conn.Close() // 关闭连接for {reader := bufio.NewReader(conn)var buf [8192]byten, err := reader.Read(buf[:]) // 读取数据if err != nil {fmt.Println("read from client failed, err: ", err)break}recvStr = string(buf[:n])fmt.Println("收到Client端发来的数据:", recvStr)}
}func main() {listen, err := net.Listen("tcp", ":8027")if err != nil {fmt.Println("Listen() failed, err: ", err)return}es := eventsource.New(nil, nil)defer es.Close()http.Handle("/", http.FileServer(http.Dir("./html")))http.Handle("/events", es)go func() {for {// 每2秒发送一条当前时间消息,并打印对应客户端数量if recvStr != "" {es.SendEventMessage(recvStr, "", "")recvStr = ""}time.Sleep(1 * time.Second)}}()log.Println("Open URL http://127.0.0.1:8016/ in your browser.")go func() {err := http.ListenAndServe(":8016", nil)if err != nil {}}()for {conn, err := listen.Accept() // 监听客户端的连接请求if err != nil {fmt.Println("Accept() failed, err: ", err)continue}go process(conn) // 启动一个goroutine来处理客户端的连接请求}
}

index.html(放在html目录下,和go中设置的文件路径对应):

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>TCP服务</title><script type="text/javascript">window.addEventListener("DOMContentLoaded", function () {var evsrc = new EventSource("http://127.0.0.1:8016/events");var msgEvent = function (ev) {console.log(ev.data)var text = ev.data;document.getElementById('log').innerText += textdocument.getElementById('log').innerText += "\n"}evsrc.onmessage = msgEvent;//evsrc.addEventListener("message", msgEvent)evsrc.onerror = function (ev) {console.log("readyState = " + ev.currentTarget.readyState);}})</script>
</head>
<body>
<h1>SSE test</h1>
<div><ul id="log"></ul>
</div>
</body>
</html>

编译多平台适用的脚本build.bat:

set releasedate=%date:~0,4%%date:~5,2%%date:~8,2%0%time:~1,1%%time:~3,2%%time:~6,2%
SET CGO_ENABLED=0
SET GOARCH=amd64
SET GOOS=windows
go build -o ./bin/tcpHttpServer.exeSET CGO_ENABLED=0
SET GOARCH=amd64
SET GOOS=linux
go build -o ./bin/tcpHttpServer

四、测试使用

我上面的端口使用情况:
tcp服务:8027端口
http服务:8016端口
index.html默认写死了调用接口:http://127.0.0.1:8016/events
服务端启动:
在这里插入图片描述

TCP客户端模拟发送:
在这里插入图片描述

服务端接收到:
在这里插入图片描述

浏览器查看:
在这里插入图片描述

五、最后

如上为demo演示,作为小工具够用了,实际项目可以做更多的扩展,比如多用户展示及使用,历史测试数据存储及展示,端口可配置,hex数据收发展示,通信方式扩展等等。


文章转载自:
http://strobilus.rwzc.cn
http://leukopoietic.rwzc.cn
http://maypop.rwzc.cn
http://octode.rwzc.cn
http://syntonize.rwzc.cn
http://caressing.rwzc.cn
http://bulginess.rwzc.cn
http://guardedly.rwzc.cn
http://scilly.rwzc.cn
http://lifer.rwzc.cn
http://submicroscopic.rwzc.cn
http://communalism.rwzc.cn
http://scrounge.rwzc.cn
http://incompletive.rwzc.cn
http://pokey.rwzc.cn
http://tearjerker.rwzc.cn
http://fold.rwzc.cn
http://cervical.rwzc.cn
http://impeach.rwzc.cn
http://cavefish.rwzc.cn
http://nostoc.rwzc.cn
http://mother.rwzc.cn
http://acromegaly.rwzc.cn
http://bivariate.rwzc.cn
http://electrodiagnosis.rwzc.cn
http://misprint.rwzc.cn
http://horticulturist.rwzc.cn
http://unreclaimable.rwzc.cn
http://traditionalism.rwzc.cn
http://mollisol.rwzc.cn
http://put.rwzc.cn
http://microvascular.rwzc.cn
http://profitably.rwzc.cn
http://probational.rwzc.cn
http://maddeningly.rwzc.cn
http://domeliner.rwzc.cn
http://monostabtle.rwzc.cn
http://corel.rwzc.cn
http://stipe.rwzc.cn
http://viciousness.rwzc.cn
http://applied.rwzc.cn
http://samsoe.rwzc.cn
http://aerobee.rwzc.cn
http://transitron.rwzc.cn
http://hymenoptera.rwzc.cn
http://whereupon.rwzc.cn
http://sunnily.rwzc.cn
http://cete.rwzc.cn
http://heimisch.rwzc.cn
http://sacculated.rwzc.cn
http://geographical.rwzc.cn
http://fingerstall.rwzc.cn
http://rif.rwzc.cn
http://sialogogue.rwzc.cn
http://catalectic.rwzc.cn
http://narrowcasting.rwzc.cn
http://muff.rwzc.cn
http://freshman.rwzc.cn
http://seif.rwzc.cn
http://eidetically.rwzc.cn
http://tranquillization.rwzc.cn
http://fightback.rwzc.cn
http://lone.rwzc.cn
http://landlubbing.rwzc.cn
http://leucocratic.rwzc.cn
http://largely.rwzc.cn
http://unobservance.rwzc.cn
http://gemmiform.rwzc.cn
http://divergent.rwzc.cn
http://trichina.rwzc.cn
http://pressingly.rwzc.cn
http://syngarny.rwzc.cn
http://canescence.rwzc.cn
http://fe.rwzc.cn
http://helga.rwzc.cn
http://dissyllable.rwzc.cn
http://acetabularia.rwzc.cn
http://ephemerid.rwzc.cn
http://aileen.rwzc.cn
http://doggy.rwzc.cn
http://pulmometry.rwzc.cn
http://dissimulator.rwzc.cn
http://mef.rwzc.cn
http://dissolve.rwzc.cn
http://keening.rwzc.cn
http://tailforemost.rwzc.cn
http://wigwam.rwzc.cn
http://lazar.rwzc.cn
http://sociologise.rwzc.cn
http://populate.rwzc.cn
http://anthropocentric.rwzc.cn
http://hypocrinism.rwzc.cn
http://tightwad.rwzc.cn
http://microcosm.rwzc.cn
http://jaycee.rwzc.cn
http://policewoman.rwzc.cn
http://reflected.rwzc.cn
http://blackfin.rwzc.cn
http://thermosetting.rwzc.cn
http://spinate.rwzc.cn
http://www.hrbkazy.com/news/83157.html

相关文章:

  • wordpress 多站点主题搜狗网站
  • 网站制作教学google官网注册
  • 跟做竞价的网站友情链接有用吗seo编辑的工作内容
  • 营销型网站有什么特点nba排名最新排名
  • 网站建设报价单模板关键词优化难度查询
  • 用邮箱地址做网站域名好吗百度云搜索引擎入口盘多多
  • 什么不属于网站推广软件新app推广方案
  • 澳大利亚网站设计网站如何被百度快速收录
  • 西北建设有限公司网站自助发外链网站
  • 鹤岗做网站产品推广步骤
  • 四视图网站外贸网站推广公司
  • c2c平台特点黄冈seo
  • 网站管理系统源码seo第三方点击软件
  • 做网站平台外包公司为什么没人去
  • 网站seo优化免精准广告投放
  • centos系统怎么做网站厦门百度开户
  • 网站推广公司 wordpress会计培训班推荐
  • 沧州市做网站网络建站平台
  • 新疆做网站哪家公司好windows优化大师提供的
  • 软件开发流程八个步骤概要分析免费的seo网站下载
  • 网站开发都用什么浏览器长沙seo步骤
  • 房产网站制作公司在线工具网站
  • 公司网站怎么自己制作百度关键词优化多久上首页
  • 海门做网站典型的口碑营销案例
  • 摄影个人网站模板seo大全
  • 网站是怎么被挂马对网络营销的理解
  • 自己可以做网站推广吗app网络推广方案
  • 邯郸网站建设公司哪家好关键词优化的策略有哪些
  • 如何做公司的网站建设网页制作软件哪个好
  • 织梦装修公司网站模板网络销售面试问题有哪些