文章目录

  • 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通讯相关推荐

  1. Android studio TCP网络调试助手应用开发(支持TCP Server与Client切换)

    在前几篇的文章中带大家完成了基于TCP的物联网安卓应用开发,教程内容是创建了一个TCP客户端并连接服务器完成数据通信的过程,后不久又发布了一个ESP8266创建TCP 服务器与安卓的客户端进行通信的一 ...

  2. boost asio 异步实现tcp通讯

    一.前言 boost asio可算是一个简单易用,功能又强大可跨平台的C++通讯库,效率也表现的不错,linux环境是epoll实现的,而windows环境是iocp实现的.而tcp通讯是项目当中经常 ...

  3. 搭建Apache Mina框架并实现Server与Client端的简单消息传递

    http://www.himigame.com/apache-mina/831.html :(作者新浪微博: @李华明Himi ) 转载自[黑米GameDev街区] 原文链接: http://www. ...

  4. JAVA通信编程(三)——TCP通讯

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  5. Netty的使用:Server和Client通信

    来自:Netty的使用:Server和Client通信_宿久-CSDN博客_netty server Netty 是一款基于NIO(Nonblocking I/O,非阻塞IO)开发的网络通信框架,提供 ...

  6. 西门子PLC封装TCP通讯块和调试助手进行TCP仿真测试

    说明:由于经常用到TCP通讯,所以封装了一个FB块便于移植调用,该块可以作为Server或Client使用. 硬件:PC 软件:①博途V15 ②S7-PLCSIM Advanced 3.0仿真软件 ③ ...

  7. 嵌入式linux学习笔记--TCP通讯整理

    嵌入式linux学习笔记–TCP通讯整理 之前的项目中使用到了比较多的tcp 通讯相关的知识,一直也没有进行整理,今天准备拿出时间好好的整理一下TCP通讯的整个过程.预计会整理linux和window ...

  8. Mina框架并实现Server与Client端的简单消息传递!

    Hibernate系列学习阶段到此结束了,那么紧接着进入Apache Mina的开发学习,很多童鞋在微薄和QQ中疑问Himi为什么突然脱离游戏开发了,嘿嘿,其实可能更多的童鞋已经看出来了,Himi在偏 ...

  9. 【Apache Mina2.0开发之一】搭建Apache Mina框架并实现Server与Client端消息传递

    Hibernate系列学习阶段到此结束了,那么紧接着进入Apache Mina的开发学习,很多童鞋在微薄和QQ中疑问Himi为什么突然脱离游戏开发了,嘿嘿,其实可能更多的童鞋已经看出来了,Himi在偏 ...

最新文章

  1. 爬虫必备工具,掌握它就解决了一半的问题
  2. 两个场景怎样合在一起_Spring AOP应用场景你还不知道?这篇一定要看
  3. 一 在应用中升级u-boot、内核以及文件系统
  4. java中ArrayList类的操作
  5. python中函数的返回值
  6. 视频教程-路由技术(CCNA魔鬼训练营系列)-思科认证
  7. Deeping_Learning 02
  8. Excel在行上面一键定位可见单元格!
  9. matlab里线性规划,Matlab 中的数学建模算法 —— 线性规划函数
  10. Outlook2016 使用技巧
  11. 【数学模拟卷总结】2022李林四套卷数学二第一套
  12. java系列 - entity,vo转换
  13. 表格自适应 css,css 表格自适应一些方法总结
  14. 什么是SSH 以及常见的ssh 功能
  15. tkinter style样式使用
  16. Java开发实例大全(PDF):603个典型事例及源码分析和24个应用方向
  17. 时间格式转换2021-08-17T16:00:00.000Z存入数据库问题
  18. 贝壳采集器:二手车之家 数据采集
  19. 易飞ERP工作流解决方案之【企业微信集成】
  20. Java 编程预热篇:JavaSE 环境搭建和 IDE的安装

热门文章

  1. 计算机系统-电路设计08-T触发器内部电路实现
  2. IP分类以及子网掩码
  3. SQLite设计与概念
  4. 算数运算符与关系运算符_Swift进阶三——运算符相关
  5. 中央民族大学计算机专业研究生,信息工程学院
  6. 将系统升级为鸿蒙11.1系统,即将脱胎换骨!EMUI11.1升级名单遭曝光,或要和跟安卓说再见...
  7. POJ 2176 Folding(区间DP)
  8. 为什么用clojure作为storm 的主要开发语言
  9. 截短 UTF-8 字符串
  10. LeetCode(617)——合并二叉树(JavaScript)