GO语言的tcp编程之服务器端与客户端

Golang实现之TCP长连接-------服务端和客户端 一、数据包的数据结构 (所有字段采用大端序)二、Server端 实现代码。三、Client端 实现代码。 阅读详情

服务器端代码:

package main

import (
	"fmt"
	"net"
)

func main() {
	fmt.Println("hello world")

	lner, err := net.Listen("tcp", "localhost:8888")
	if err != nil {
		fmt.Println("listener creat error", err)
	}
	fmt.Println("waiting for client")
	for {
		conn, err := lner.Accept()
		if err != nil {
			fmt.Println("accept error", err)
		}
		go handleConnection(conn)
	}

}

func handleConnection(conn net.Conn) {
	defer conn.Close()
	fmt.Println("connection success")
	fmt.Println("client address: ", conn.RemoteAddr())
	all_mess := ""
	for {
		buf := make([]byte, 16)
		fmt.Printf("等待客户端%s 发送消息\n", conn.RemoteAddr().String())
		// 读取数据
		n, err := conn.Read(buf)
		if err != nil {
			fmt.Printf("客户端退出err=%v", err)
			return
		}
		if string(buf[:n]) == "exit" {
			break
		}
		all_mess = string(buf[:n])
		fmt.Println(string(buf[:n]))
		sendLen := len(all_mess)
		fmt.Println("send message len;", sendLen)

	}

	fmt.Println("send message success")

}

客户端代码:

package main

import (
	"bufio"
	"fmt"
	"net"
	"os"
	"strings"
)

func main() {
	// 连接服务端
	conn, err := net.Dial("tcp", "127.0.0.1:8888")
	if err != nil {
		fmt.Println("client dial err=", err)
		return
	}
	// 构建reader, 从控制台读入数据
	reader := bufio.NewReader(os.Stdin)

	for {
		// 按行读取数据
		line, err := reader.ReadString('\n')
		if err != nil {
			fmt.Println("readingString err", err)

		}
		// 去除换行
		line = strings.Trim(line, " \r\n")
		if line == "exit" {
			fmt.Println("将客户端退出")
			break
		}
		// 传送数据
		_, err = conn.Write([]byte(line + "\n"))
		if err != nil {
			fmt.Println("conn.Write err=", err)
		}
		// fmt.Printf("客户端发送了%d字节数据, 退出", n)
	}
}

Go 语言使用 net 包实现 Socket 网络编程 友情提示:此篇文章大约需要阅读10分钟12秒,不足之处请多指教,感谢你的阅读。订阅本站 此文章首发于 Debug客栈 |https://www.debuginn.cn TCP/IP TCP/IP 传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP 传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP 传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP 传输协议是严格来说是一个四层的体系结构,应用层、传输层、. 阅读详情

相关推荐

go简易tcp socket客户端和服务器

go简易tcp socket客户端和服务器1.Socket编程以前使用Socket编程时,一般是如下步骤 建立socket,socket 绑定socket,bind 监听,listen 接受连接,accept 接受/发送,recv/send go tcp版真的很省事 服务端: 就是Listen、Accept、Read/Write 客户端 就是Dial、Read/Write直接上代码2.Ser

绯浅yousa的笔记 1万+

Golang 从零开始实现多人聊天室(一)服务端监听

从零开始实现一个基于Go的多人在线聊天室,功能包括:单聊、群聊、昵称、上下线通知、聊天日志等等,该博文简单实现服务端的端口监听,下篇博文将会讲解客户端的代码,将两端真正连接后进行通信。·

猫轻王的博客 1345

go语言实现TCP通信(附完整源码)

go语言实现TCP通信(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 396

【Go】实现TCP服务端与客户端

【Go】实现TCP服务端与客户端。

Fanjufei的博客 421

从412到200:一步步拆解瑞数6代jsvmp的cookie生成与验证流程

本文深入解析瑞数6代JSVMP的动态安全防护机制,详细拆解从412到200状态的cookie生成与验证流程。通过剖析JSVMP虚拟机核心机制、动态元数据解析及环境检测绕过策略,为逆向工程师提供实用的技术解决方案,帮助突破瑞数6代的高级防御体系。

weixin_30342209的博客 508

HDMI调试避坑指南:从AVI InfoFrame到通用控制包,这些DataIsland Packet细节千万别忽略

本文深入解析HDMI调试中DataIsland数据包的关键细节,包括AVI InfoFrame、通用控制包和音频时钟再生包(ACR)的配置与故障排查。通过实际案例和寄存器配置示例,帮助工程师快速定位显示异常、色彩失真和音频中断等问题,提升HDMI接口调试效率。

weixin_30897233的博客 634

go语言使用tcp建立客户端和服务端

TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一种面向连接(连接导向)的、可靠的、基于字节流的传输层(Transport layer)通信协议,因为是面向连接的协议,数据像水流一样传输,会存在黏包问题。一个TCP服务端可以同时连接很多个客户端,例如世界各地的用户使用自己电脑上的浏览器访问淘宝网。因为Go语言中创建多个goroutine实现并发非常方便和高效,所以我们可以每建立一次链接就创建一个goroutine去处

ydl1128的博客 2036

RAG——从0到1快速搭建RAG应用

本文介绍了基于LangChain框架构建RAG(检索增强生成)应用的技术方案,涵盖核心模块选型与实现流程。技术栈包括:LangChain应用框架、pypdf文档解析、RecursiveCharacterTextSplitter文本分块、bge-small-zh-v1.5向量模型、Faiss向量库和通义千问大模型。文章详细说明了开发环境配置步骤,包括虚拟环境创建、依赖库安装和模型下载。核心代码分为索引、检索、生成三大流程,索引流程完成PDF文档解析、分块和向量化存储;检索流程实现查询向量化和相似度匹配;生成流

小志的博客 589

非零基础自学Golang 第19章 Socket编程 19.3 TCP编程 19.3.1 TCP简介 & 19.3.2 TCP客户端

非零基础自学Golang 第19章 Socket编程 19.3 TCP编程 19.3.1 TCP简介 & 19.3.2 TCP客户端

代码改变世界 524

重访时间与覆盖分析的stk操作

1.打开stk 2.创建一个新的场景,命名为Test,选择地球为场景星球,若为金星,可在Central Body里选择Venus(金星自转周期慢,自转周期243天,卫星轨道变化不明显)(其中start stop时间可设置长一些) 3.插入一个AreaTarget或者place,以AreaTarget为例 选择Pattern,Add三个点(用法可见前面的博客,有时候编程的代码也可以帮助理解stk的操作) 4.插入Satellite,选择Orbit Wizard(若想设置卫星的六根数也可

weixin_42664107的博客 1万+

爬虫瑞数5案例:联通

瑞数动态安全 Botgate(机器人防火墙)以“动态安全”技术为核心,通过动态封装、动态验证、动态混淆、动态令牌等技术对服务器网页底层代码持续动态变换,增加服务器行为的“不可预测性”,实现了从用户端到服务器端的全方位“主动防护”,为各类 Web、HTML5 提供强大的安全保护。

老衲爱洗头的博客 4469

golang socket读写同时_golang网络编程

1、网络编程1.1协议协议可以理解为规则,是数据传输和解释的规则,是通信双方都要遵守的规则。协议存在的意义是为了让双方更好的沟通。在双方之间被遵守的协议成为原始协议。当此协议被更多的人采用后,不断的完善,最终形成一个稳定的、完整的文件传输协议,被广泛应用于各种文件传输过程中。该协议就成为了一个标准协议。最初的ftp协议就是这样来的。1.2分层模型越下面的层,越靠近硬件;越上面的层,越靠近...

weixin_30464195的博客 572

【嵌入式DIY实例-ESP32篇】-热成像仪

在本文中,我们将使用 MLX90640 热像仪和 1.8 英寸 ST7735 TFT 显示屏,构建一款基于 ESP32 的高性能紧凑型热像仪。本项目旨在打造一款便携、响应迅速的热像仪,具有增强的图像质量、优化的帧率和精准的温度读数。

视觉与物联智能 876

Go语言Web服务--Socket编程

Web服务 Web服务可以让你在HTTP协议的基础上通过XML或者JSON来交换信息。如果你想知道上海的天气预报、中国石油的股价或者淘宝商家的一个商品信息,你可以编写一段简短的代码,通过抓取这些信息然后通过标准的接口开放出来,就如同你调用一个本地函数并返回一个值。 Web服务背后的关键在于平台的无关性,你可以运行你的服务在Linux系统,可以与其他Window的asp.net程序交互,同样的,...

一只IT小小鸟 2368

GPU 资源池化云平台解决方案​

定义与特点Kubernetes是一个开源的容器编排和管理平台,通过提供自动化和声明式的方式来部署、扩展、维护和运行应用程序。它支持跨多个主机和集群部署容器,确保应用程序的高可用性和可扩展性。Kubernetes提供了丰富的功能和插件,允许用户根据自己的需求进行定制和扩展。架构与组件控制平面(Control Plane):负责集群的决策(如调度)和集群状态的检测与响应。

ZhangJiqun&191cm&85kg 1159

USB 网卡——RNDIS 控制消息流程

在其控制端点上获取控制消息时,设备必须在通信类接口的中断 IN 端点上返回通知,每当设备可以返回控制消息时,主机就会轮询该通知。需要注意的是,如果设备由于某种原因收到GET_ENCAPSULATED_RESPONSE,并且无法使用控制端点上的有效数据做出响应,则应返回设置为 0x00 的单字节数据包,而不是 stall 控制端点。下表中定义了此传输。收到 RESPONSE_AVAILABLE 通知后,主机使用下表中定义的GET_ENCAPSULATED_RESPONSE 传输从控制端点读取控制消息。

tyustli 371

GO语言使用之网络编程(TCP编程)

Golang的主要设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分。TCP socket编程,是网络编程的主流。之所以叫Tcp socket编程,是因为底层是基于Tcp/ip协议的. 比如: QQ聊天b/s结构的http编程,我们使用浏览器去访问服务器时,使用的就是http协议,而http底层依旧是用tcp socket实现的。比如: 京东商城 【这属于go web 开发范畴 】2、协议(tcp/ip)...

web13618542420的博客 507

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

go语言网络编程之tcp

go语言网络编程之tcp go语言网络编程需要导入包 net如下 import (     "fmt"     "net" ) 重要函数 func Listen(net, laddr string) (Listener, error) func Accept() (c Conn, err error) func Read(b []byte) (n

喜欢吃一口烤肉的啵啵 2312

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

青少年编程与数学 02-003 Go语言网络编程 13课题、Go语言Tcp编程

本课题介绍了Go语言的TCP编程,主要依赖于net包。内容包括服务器端监听端口、接受连接、数据传输和关闭连接的基本步骤,以及客户端连接服务器和数据发送接收的方法。强调了Go语言在并发处理上的优势,适用于Web服务器、后端服务、实时通信系统等多种网络通信场景。性能优化策略包括并发处理、缓冲区优化、复用缓冲区、异步I/O、连接池等。最后提供了一个聊天室应用示例,展示了Go语言TCP编程的实际应用。Go语言的TCP编程涉及监听端口、接受连接、数据传输和关闭连接等步骤。通过net包提供的net.Conn。

明月看潮生的博客 1669

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Go语言网络编程(socket编程)TCP

TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一种面向连接(连接导向)的、可靠的、基于字节流的传输层(Transport layer)通信协议,因为是面向连接的协议,数据像水流一样传输,会存在黏包问题。将上面的代码编译成client或client.exe可执行文件,先启动server端再启动client端,在client端输入任意内容回车之后就能够在server端看到client端发送的数据,从而实现TCP通信。

编程技术, 日益精进 1683

go语言服务器搭建教程,Golang学习笔记之简易聊天系统服务器的搭建

下面先列举一下程序使用到的函数,省的大家去找,直接拷贝官方api的解释吧。func DialTCP(net string, laddr, raddr *TCPAddr) (*TCPConn, error)DialTCP在网络协议net上连接本地地址laddr和远端地址raddr。net必须是"tcp"、"tcp4"、"tcp6";如果laddr不是nil,将使用它作为本地地址,否则自动选择一个本地...

weixin_35380427的博客 381

golang套接字

Go 语言的net包使得套接字编程变得简单而高效。通过使用 TCP 或 UDP 套接字,你可以轻松实现网络通信。若有其他问题或需要更深入的内容,请随时问我!

weixin_39289004的博客 928

Go语言实现简单的socket案例

最近利用空余时间学了一会Go语言,写了个简单的socket案例,不多说,直接上代码 Server 端代码: package main import ( "fmt" "net" ) // 服务器地址:端口 var serverAddress = "localhost:1234" func start() { acceptor,err := net.Listen("tcp", serv...

Zane的博客 813

[go学习笔记.第十六章.TCP编程] 1.基本介绍以及入门案例

TCP编程 基本介绍以及入门案例

资深系统架构,深耕高并发研发与 AI 大模型工程化落地。技术栈以 Python (AI/NLP/RAG/Agent) 与 Golang (高并发架构) 为双核心,兼具 PHP 大型应用经验。专注算法落地、复杂系统设计及团队技术赋能 576

golang网络编程学习-TCP

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

wtt234的专栏 1959
上一篇: gin框架下casbin权限系统ACL授权验证模型入门示例讲解
下一篇: 【无标题】go语言实现websocket功能实例
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

php、go编程学习实例

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值