go语言 tcp服务器,Golang 搭建Tcp服务器-程序员宅基地

技术标签: go语言 tcp服务器  

使用Go搭建Tcp服务器,数据库使用MongoDB,代码复制修改参数即可使用。

package main

import (

"fmt"

"gopkg.in/mgo.v2"

"gopkg.in/mgo.v2/bson"

"net"

)

type Message struct {

_Id bson.ObjectId

Client string

Msg string

}

func main() {

session, coll := ConnectMongo()

defer session.Close()

lner, err := net.Listen("tcp", "192.168.124.65:8080")

if err != nil {

fmt.Println("Listener create error: ", err)

return

}

fmt.Println("Waiting for client...")

for {

conn, err := lner.Accept()

if err != nil {

fmt.Println("Accept error: ", err)

return

}

go handleConnection(coll, conn)

}

}

func handleConnection(coll *mgo.Collection, conn net.Conn) {

clientAddr := conn.RemoteAddr().String()

fmt.Println("Connection success. Client address: ", clientAddr)

defer conn.Close()

for {

buffer := make([]byte, 1024)

recvLen, err := conn.Read(buffer)

if err != nil {

fmt.Println("Read error: ", err, clientAddr)

return

}

strBuffer := string(buffer[:recvLen])

fmt.Println("Client message: ", strBuffer)

InsertMongo(coll, clientAddr, strBuffer)

}

}

func ConnectMongo() (*mgo.Session, *mgo.Collection) {

session, err := mgo.Dial("192.168.8.10:27017")

if err != nil {

panic(err)

}

session.SetMode(mgo.Monotonic, true)

coll := session.DB("tcp_server").C("tcp_data")

return session, coll

}

func InsertMongo(coll *mgo.Collection, client, msg string) {

insertMsg := Message{

Client: client,

Msg: msg,

}

err := coll.Insert(&insertMsg)

if err != nil {

fmt.Println("Insert mongodb error: ", err)

}

}

有疑问加站长微信联系(非本文作者)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_28900463/article/details/119270959

智能推荐

最新的目标检测的方法_目标检测的新方法-程序员宅基地

文章浏览阅读1.1k次。最新的目标检测的方法I will start with a short introduction of different approaches to object detection. After both traditional and newer approaches are presented, you can read about the most important parts of ..._需要学习的新检测方式

将GIT仓库从Github导入到Git@OSC-程序员宅基地

文章浏览阅读84次。为什么80%的码农都做不了架构师?>>> ..._git仓库导入到gitosc

代码审计中应注意的命令执行函数以及命令-程序员宅基地

文章浏览阅读871次,点赞23次,收藏24次。在ob_start系统的callback函数中,如果指定的callback函数包含执行代码,那么也可能是执行代码的来源。类似于os.system(),subprocess.call()运行一个命令,等待它完成,然后返回返回码。该函数可以创建一个匿名(匿名)函数,但如果函数的代码是由用户输入构造的,可能会执行不安全的代码。这两个函数可以调用一个用户定义的函数,如果传递的是含有系统命令的字符串,可能被用来执行代码。更复杂的执行外部程序的方法,允许双向通信,读写进程的 STDIN 和 STDOUT。

python报错distutils.errors.DistutilsError(记一次项目部署问题)_distutils.errors.distutilserror: command '['/usr/b-程序员宅基地

文章浏览阅读1.1w次,点赞17次,收藏10次。报错信息message:distutils.errors.DistutilsError: Command '['/root/.virtualenvs/xspiderenv/bin/python3', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', '/tmp/tmphyu84kuz', '--quiet', '--index-url', 'http://mirrors.aliyun.com/pypi/sim_distutils.errors.distutilserror: command '['/usr/bin/python3', '-m', 'pip',

浅谈嵌入式软件测试秘诀-程序员宅基地

文章浏览阅读824次,点赞19次,收藏18次。本文主要针对嵌入式设备测试的一些技巧和测试重点,欢迎各位参考学习

正则表达式及python中re库的使用_re匹配标点-程序员宅基地

文章浏览阅读437次。正则表达式_re匹配标点

随便推点

阿里云EMR2.0平台:让大数据更简单_emr 数据-程序员宅基地

文章浏览阅读1.1k次。作为国内开源大数据领域的引领者,EMR2.0在平台体验、数据开发、产品形态及数据分析等方面做了全面突破与创新,重新定义了新一代开源大数据平台。本文介绍如何利用EMR新平台实现更加低成本、高效率、智能化的大数据集群管控和应用开发。_emr 数据

复数混频发射机原理与仿真_实数混频和复数混频-程序员宅基地

文章浏览阅读2.3k次,点赞4次,收藏46次。1、复数混频发射机原理上图采用的是上变频复数混频的原理图。IQ链路有自己的混频支路,本振LO功分两路,两路的相位相差90°,两个独立输出随后在求和放大器中求和,产生所需的RF输出。若只输入I路信号x或者Q路信号x,那么输出只会产生LO频率±x的输出;另一路没有输入,输出为静音,最终结果为有信号的一路直接称为RF输出。乍一看没啥差异,其实上面两幅图中有一个相位差异在里面。上图可以观察到:LO频率加输入频率的信号是同相的(上边带),但L..._实数混频和复数混频

ios创建证书文件_创建ios证书文件-程序员宅基地

文章浏览阅读541次。在处理本文中这些操作之前你得有一个开发者账号(可以从苹果官网申请)1、打开钥匙串,在本地创建证书csr文件CSR文件:生成证书的过程中,有一步是需要我们上传CSR文件的。为什么必须要上传它?CSR文件是用于换取证书的公钥文件,导出CSR这个过程其实就是电脑向证书机构申请凭证的过程。证书是你用电脑制作的并且颁发给你的电脑的。但是这台电脑是否具有制作证书的能力,就是要这个CSR文件来凭证。_创建ios证书文件

python使用 pywin32 模块操作 excel,Python 操作 excel 系列之五_python pywin32打印excel为a3-程序员宅基地

文章浏览阅读2w次,点赞4次,收藏43次。本篇博客是 Python 操作 excel 系列的第5篇,前4篇博客阅读地址如下所示:2022 之Python操作 Excel,xlrd 与 xlwt 模块一文掌握Python 操作 Excel,从 xlwings 模块开始Python 操作 Excel 第3篇博客,python openpyxl 模块一文打通python处理excel文件,python xlsxwriter 一文初掌握本篇咱们要学习的模块是 pywin32,该模块主要封装了 Windows 系统的 Win32 API,_python pywin32打印excel为a3

医院云HIS系统源码,二级医院、专科医院his系统源码,经扩展后能够应用于医联体/医共体-程序员宅基地

文章浏览阅读999次,点赞23次,收藏15次。基于云计算技术的B/S架构的HIS系统,为医疗机构提供标准化的、信息化的、可共享的医疗信息管理系统,实现医患事务管理和临床诊疗管理等标准医疗管理信息系统的功能。

解读PMP考点:快速跟进和赶工的区别-程序员宅基地

文章浏览阅读2.8w次,点赞5次,收藏27次。解读PMP考点:快速跟进和赶工的区别赶工和快速跟进都是进度压缩技术。进度压缩技术是指在不缩减项目范围的前提下,通过缩短或加快进度工期,以满足进度制约因素、强制日期或者其他进度目标。赶工和进度压缩的区别 解释 举例 影响分析 赶工 通过增加资源,以最小的成本代价来压缩进度工期的一种技术。 1、批准加班 2、增加额外资源或支付费用,来...