Golang实现Server和Client的TCP通讯
文章目录
- 0. 前言
- 1. 问题描述
- 2. 开发环境和工具
- 3. Server端
- 4. Client端
0. 前言
下面代码是我亲自写过测试过的,绝对有效!
1. 问题描述
使用Golang分别构建Server端和Client端,并实现两者之间的TCP通讯。详细发送/接收/处理数据的代码要自己写,这里把通用的建立Server端和Client端连接的方法写一下。
这里使用Golang net包来建立连接,建议先查看一下Golang标准库文档的net包,上面已经将通讯格式写的清清楚楚了。
Tips: 写Golang相关代码的时候多参考Golang标准库文档,你想要的应有尽有!
Go语言标准库文档中文版:点此跳转
2. 开发环境和工具
开发环境:
Windows 10
go version go1.16.2 windows/amd64
工具:
VSCode x64
VSCode搭建Go开发环境可参考博文(很简单):点此跳转
3. Server端
func main() {fmt.Println("Starting the server ...")// Listen函数创建服务端,使用本地IPln, err := net.Listen("tcp", "google.com:80")if err != nil {// handle error}defer ln.Close()// 监听并接受来自客户端的连接for {fmt.Println("Server listening ...")conn, err := ln.Accept()if err != nil {// handle error}// 可以同时与多个Client建立连接go handleConnection(conn)}
}func handleConnection(conn net.Conn) {// @description 连接中的收发信处理// @param conn net.Conn “连接”fmt.Println("Connection built successfully!")for {buf := make([]byte, 1024)len, err := conn.Read(buf)// 处理接收的数据}
}
4. Client端
func main() {// Dial函数和服务端建立连接fmt.Println("Dailing...")conn, err := net.Dial("tcp", "google.com:80")fmt.Println("Dailing successfully!")if err != nil {// handle error}status, err := bufio.NewReader(conn).ReadString('\n')fmt.Println("Send messages to Server:")// 发送输入的数据_, err := conn.Write([]byte(status))
}
Golang实现Server和Client的TCP通讯相关推荐
- Android studio TCP网络调试助手应用开发(支持TCP Server与Client切换)
在前几篇的文章中带大家完成了基于TCP的物联网安卓应用开发,教程内容是创建了一个TCP客户端并连接服务器完成数据通信的过程,后不久又发布了一个ESP8266创建TCP 服务器与安卓的客户端进行通信的一 ...
- boost asio 异步实现tcp通讯
一.前言 boost asio可算是一个简单易用,功能又强大可跨平台的C++通讯库,效率也表现的不错,linux环境是epoll实现的,而windows环境是iocp实现的.而tcp通讯是项目当中经常 ...
- 搭建Apache Mina框架并实现Server与Client端的简单消息传递
http://www.himigame.com/apache-mina/831.html :(作者新浪微博: @李华明Himi ) 转载自[黑米GameDev街区] 原文链接: http://www. ...
- JAVA通信编程(三)——TCP通讯
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- Netty的使用:Server和Client通信
来自:Netty的使用:Server和Client通信_宿久-CSDN博客_netty server Netty 是一款基于NIO(Nonblocking I/O,非阻塞IO)开发的网络通信框架,提供 ...
- 西门子PLC封装TCP通讯块和调试助手进行TCP仿真测试
说明:由于经常用到TCP通讯,所以封装了一个FB块便于移植调用,该块可以作为Server或Client使用. 硬件:PC 软件:①博途V15 ②S7-PLCSIM Advanced 3.0仿真软件 ③ ...
- 嵌入式linux学习笔记--TCP通讯整理
嵌入式linux学习笔记–TCP通讯整理 之前的项目中使用到了比较多的tcp 通讯相关的知识,一直也没有进行整理,今天准备拿出时间好好的整理一下TCP通讯的整个过程.预计会整理linux和window ...
- Mina框架并实现Server与Client端的简单消息传递!
Hibernate系列学习阶段到此结束了,那么紧接着进入Apache Mina的开发学习,很多童鞋在微薄和QQ中疑问Himi为什么突然脱离游戏开发了,嘿嘿,其实可能更多的童鞋已经看出来了,Himi在偏 ...
- 【Apache Mina2.0开发之一】搭建Apache Mina框架并实现Server与Client端消息传递
Hibernate系列学习阶段到此结束了,那么紧接着进入Apache Mina的开发学习,很多童鞋在微薄和QQ中疑问Himi为什么突然脱离游戏开发了,嘿嘿,其实可能更多的童鞋已经看出来了,Himi在偏 ...
最新文章
- 爬虫必备工具,掌握它就解决了一半的问题
- 两个场景怎样合在一起_Spring AOP应用场景你还不知道?这篇一定要看
- 一 在应用中升级u-boot、内核以及文件系统
- java中ArrayList类的操作
- python中函数的返回值
- 视频教程-路由技术(CCNA魔鬼训练营系列)-思科认证
- Deeping_Learning 02
- Excel在行上面一键定位可见单元格!
- matlab里线性规划,Matlab 中的数学建模算法 —— 线性规划函数
- Outlook2016 使用技巧
- 【数学模拟卷总结】2022李林四套卷数学二第一套
- java系列 - entity,vo转换
- 表格自适应 css,css 表格自适应一些方法总结
- 什么是SSH 以及常见的ssh 功能
- tkinter style样式使用
- Java开发实例大全(PDF):603个典型事例及源码分析和24个应用方向
- 时间格式转换2021-08-17T16:00:00.000Z存入数据库问题
- 贝壳采集器:二手车之家 数据采集
- 易飞ERP工作流解决方案之【企业微信集成】
- Java 编程预热篇:JavaSE 环境搭建和 IDE的安装