golang网络编程学习-TCP

golang网络编程学习-TCP

网络编程主要的内容是:
1.TCP网络编程
2.http服务
3.rpc服务
4.websocket服务

 

golang网络编程学习-TCP

一、TCP/IP
TCP/IP是一种协议簇,它是网络通信的基础,是互联网的核心协议,负责数据在网络中的传输。它包括TCP和IP两个协议,TCP提供数据报传输的可靠性,IP则负责数据报传输的转发。
二、Go中的TCP编程
Go语言中的net包提供了TCP编程的相关API,主要包括以下几个函数:
net.DialTCP():创建一个TCP连接;
net.ListenTCP():监听一个TCP端口;
net.TCPConn():表示一个TCP连接。
下面我们将分别介绍如何使用这些函数进行TCP编程。
 

 一、server端

package mainimport ("bufio""fmt""net"
)func handleClient(conn *net.TCPConn) {defer conn.Close()//	读取客户端请求reader := bufio.NewReader(conn)req, err := reader.ReadString('\n')if err != nil {fmt.Println(err)return}fmt.Println("接收到的请求是:", req)//发送响应数据writer := bufio.NewWriter(conn)resp := "Hello,client!\n"_, err = writer.WriteString(resp)if err != nil {fmt.Println(err)return}writer.Flush()}func main() {tcpListenner, err := net.ListenTCP("tcp", &net.TCPAddr{IP:   net.IPv4(0, 0, 0, 0),Port: 9999,})if err != nil {fmt.Println(err)return}defer tcpListenner.Close()fmt.Println("监听端口:", 9999)for {conn, err := tcpListenner.AcceptTCP()if err != nil {fmt.Println(err)continue}fmt.Println("新的客户端连接...")go handleClient(conn)}
}

二、客户端

package mainimport ("bufio""fmt""net"
)func main() {conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{IP:   net.IPv4(127, 0, 0, 1),Port: 9999,})if err != nil {fmt.Println(err)return}defer conn.Close()//	发送数据请求writer := bufio.NewWriter(conn)req := "Hello,server!\n"_, err = writer.WriteString(req)if err != nil {fmt.Println(err)return}writer.Flush()//	接受响应数据reader := bufio.NewReader(conn)resp, err := reader.ReadString('\n')if err != nil {fmt.Println(err)return}fmt.Println("接收到达额数据是", resp)
}

不过多的解释了,都是在注释里了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/3737.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot+actuator和admin-UI实现监控中心

使用SpringBoot很久了&#xff0c;但是很少使用到SpringBoot的查看和监控&#xff0c;将来八成也不会用到&#xff0c;万一有机会用到呢&#xff1f;所以记录一下以前学习SpringBootactuator和adminUI实现监控中心的方式 Springboot的版本2.0.x <parent><groupId>…

Spring学习记录---回顾反射机制

目录 10.回顾反射机制 10.1 分析方法四要素 //不使用反射机制调用这些方法 使用反射机制调用方法 代码&#xff1a; 运行结果&#xff1a; 10.4 假设你知道属性名 测试代码 运行结果 10.回顾反射机制 10.1 分析方法四要素 package com.dong.reflect;public class Som…

【java爬虫】将优惠券数据存入数据库排序查询

本文是在之前两篇文章的基础上进行写作的 (1条消息) 【java爬虫】使用selenium爬取优惠券_haohulala的博客-CSDN博客 (1条消息) 【java爬虫】使用selenium获取某宝联盟淘口令_haohulala的博客-CSDN博客 前两篇文章介绍了如何获取优惠券的基础信息&#xff0c;本文将获取到的…

Make:默认构建目标(终极目标)

相关文章 Make&#xff1a;目标&#xff08;Target&#xff09;构建的详细和依赖项的处理过程&#xff08;个人总结&#xff09; 默认情况下make命令的构建从第一个没有 . 前缀的目标&#xff08;target&#xff09;开始&#xff08;除非有 . 前缀的目标中有一个或更多 / &…

PyTorch 1.13简介

# 1.  PyTorch 1.13 据官方介绍&#xff0c;PyTorch 1.13 中包括了 BetterTransformer 的稳定版&#xff0c;且不再支持 CUDA 10.2 及 11.3&#xff0c;并完成了向 CUDA 11.6 及 11.7 的迁移。此外 Beta 版还增加了对 Apple M1 芯片及 functorch 的支持。 1.1 主要更新 Be…

php运算符的基本使用

$base 20; $height 10; $area $base * $height; 我用来将base与height相乘的* &#xff0c;就是乘法运算。 我们有相当多的运算符&#xff0c;让我们对主要的运算符做一个简单的总结。 首先&#xff0c;这里是算术运算符。,-,*,/ &#xff08;除法&#xff09;,% &#x…

C++第四讲

思维导图 仿照string类&#xff0c;实现myString类 /* ---------------------------------author&#xff1a;YoungZorncreated on 2023/7/19 19:20.--------------------------------- */ #include<iostream> #include<cstring>using namespace std;class myStri…

【Windows】查找占用端口的进程、结束进程

记录一下在windows环境下通过命令行窗口进行进程有关的几个操作。 1、查找占用端口的进程ID(PID)&#xff1a; netstat -ano|findstr 28087 假如PID为21812、根据PID找进程名称&#xff1a; tasklist | findstr 2181 发现是占用28087端口的进程为&#xff1a;java.exe。 3、…

【数据结构】时间复杂度---OJ练习题

目录 &#x1f334;时间复杂度练习 &#x1f4cc;面试题--->消失的数字 题目描述 题目链接&#xff1a;面试题 17.04. 消失的数字 &#x1f334;解题思路 &#x1f4cc;思路1&#xff1a; malloc函数用法 &#x1f4cc;思路2&#xff1a; &#x1f4cc;思路3&…

LeetCode(字节10日)-0714

648. 单词替换(中等) 思路&#xff1a;前缀树匹配 // 思路&#xff1a;前缀树匹配&#xff0c;成功返回前缀&#xff0c;失败返回 null&#xff0c;保留原来单词值 // 多个词根时使用最短词根&#xff0c;不需要 fail 指针 // string 处理使用 stringBuilder&#xff0c;避…

如何使用DiskPart命令行格式化分区?

想要格式化磁盘分区&#xff0c;您可以使用磁盘管理工具&#xff0c;或在Windows文件资源管理器中右键单击驱动器并选择“格式化”。如果您更想使用命令行来格式化磁盘&#xff0c;那么Windows自带的DiskPart将是首选。 DiskPart有很多优点&#xff0c;例如&#xff0c;如果您想…

最短Hamilton路径

题目 给定一张 n 个点的带权无向图&#xff0c;点从 0∼n−1 标号&#xff0c;求起点 0 到终点 n−1 的最短 Hamilton 路径。 Hamilton 路径的定义是从 0 到 n−1 不重不漏地经过每个点恰好一次。 输入格式 第一行输入整数 n。 接下来 n 行每行 n 个整数&#xff0c;其中第…

活动页服务端渲染探索

目标 通过采用在服务端渲染激励页的方式&#xff0c;降低页面加载白屏时间&#xff0c;从而提升激励 H5 渲染体验。 架构设计 前端服务框架调研选型 只对比分析以下两种方案&#xff1a; Vue3 Nuxt3 WebpackNext.js React Node.js ’Nuxt3Next.js介绍Nuxt是一个基于Vu…

Clickhouse基础和基本优化

CK基础和基本优化 一、ClickHouse的特点列式存储高吞吐写入能力数据分区与线程级并行表引擎的使用MergeTreeReplacingMergeTreeSummingMergeTree 二、SQL操作1.Insert2.Update 和 Delete3.查询操作4.alter操作5.导出数据 三、基于表的分布式集群集群写入流程&#xff08; 3分片…

旅游卡加盟代理合伙人模式软件开发

旅游卡加盟代理合伙人模式是近年来逐渐兴起的一种旅游产业发展模式&#xff0c;它通过将旅游卡加盟商与代理商紧密结合&#xff0c;实现资源共享、风险共担、合作共赢的目标。而软件开发作为旅游卡加盟代理合伙人模式的重要技术支持&#xff0c;对于该模式的实施和发展起着至关…

深入理解Java虚拟机(二)Java内存区域与内存溢出异常

一、前言 对于Java程序员来说&#xff0c;在虚拟机自动内存管理机制的帮助下&#xff0c;不再需要为每一个new操作去写配对的delete/free代码&#xff0c;不容易出现内存泄漏和内存溢出问题&#xff0c;看起来由虚拟机管理内存一切都很美好。不过&#xff0c;也正是因为Java程序…

SQLite和SDK基本概念

SQLite是一种轻量级的关系型数据库管理系统 (RDBMS)&#xff0c;它以文件形式存储数据&#xff0c;不需要独立的服务器进程&#xff0c;可以直接集成到应用程序中使用。SQLite的设计目标是提供一种简单、快速、可靠的数据库解决方案&#xff0c;适用于各种规模的应用程序和设备…

iOS APP外包开发的语言比较

iOS APP是Apple公司运行在iPhone手机上的APP&#xff0c;开发这样的APP有两种开发语言可以选择&#xff0c;都是由Apple公司提供的语言。其中Objective-C使用时间相对较长&#xff0c;有历史兼容考虑&#xff0c;而Swift是新的开发语言&#xff0c;更符合近些年开发语言的发展理…

Vue单页面实现el-tree el-breadcrumb功能、el-tree右键点击树节点展示菜单功能、树节点编辑节点字段名称功能

(1) 点击el-tree节点 使用el-breadcrumb展示选中树节点及父项数据 重点&#xff1a;handleNodeClick方法、getTreeNode方法 (2) 选择el-breadcrumb-item设置el-tree节点选中 必须设置属性: current-node-key"currentNodeKey" 、 node-key"id" 重点: 设置…

如何应对.kann勒索病毒:恢复数据的有效策略

导言&#xff1a; 随着科技的发展和互联网的普及&#xff0c;网络安全问题越来越受到人们的关注。而在网络安全领域&#xff0c;勒索病毒是一类极具破坏力的恶意软件。其中&#xff0c; .kann 勒索病毒是近期出现的一种恶意软件变种。91数据恢复本文将介绍什么是 .kann 勒索病毒…