首页 > 其他分享 >Go语言---TCP服务端以及客服端的实现

Go语言---TCP服务端以及客服端的实现

时间:2024-07-15 14:30:17浏览次数:11  
标签:listener return Addr err TCP --- Go conn

TCP的C/S架构

在这里插入图片描述

TCP服务器的实现

监听的底层实现

func Listen(network, address string) (Listener, error) {
	var lc ListenConfig
	return lc.Listen(context.Background(), network, address)
}
type Listener interface {
	// Accept waits for and returns the next connection to the listener.
	Accept() (Conn, error)

	// Close closes the listener.
	// Any blocked Accept operations will be unblocked and return errors.
	Close() error

	// Addr returns the listener's network address.
	Addr() Addr
}

在这里插入图片描述

  • 服务端阻塞等待客户端的连接
  • 可以使用netcat工具对其进行测试
    在这里插入图片描述

netcat下载地址netcat下载地址

在这里插入图片描述

TCP客户端的实现

package main

import (
	"fmt"
	"net"
)

func main() {
	//主动连接服务器
	conn, err := net.Dial("tcp", "127.0.0.1:8000")
	if err != nil {
		fmt.Println("err=", err)
		return
	}
	defer conn.Close()

	conn.Write([]byte("you ok?"))
}

在这里插入图片描述

标签:listener,return,Addr,err,TCP,---,Go,conn
From: https://blog.csdn.net/m0_73537205/article/details/140129858

相关文章

  • Go语言---网络编程基础知识
    网络协议从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。假设,A、B双方欲传输文件。规定:第一次,传输文件名,接收方接收到文件名,应答OK给传输方;第二次,发送文件的尺寸,接收方接收到该数据再次应答一个OK;第三次,传输文件内容。同样,接收方接收数据完......
  • Vue3+Element Plus 使用sortablejs对el-table表格进行拖拽
    sortablejs官网:点击跳转一、安装sortablejsnpminstallsortablejs--save二、 页面按需引入importSortablefrom'sortablejs';三、组件方法1.temlate:<template><el-tableref="tableHeader":data="tableData"row-key="id"style=&quo......
  • webrtc-streamer实时播放监控
    公司要做web端监控实时播放,经过调研,webrtc-streamer的方式对前后端项目侵入最少,且没有延迟卡钝的现象。一、准备工作一个摄像头,摄像头对应的rtsp流链接,一台电脑,一个vue项目。二、Webrtc-streamer安装及启动教程 1、下载安装包下载地址:https://github.com/m......
  • redis学习-7
    redis阻塞问题发现阻塞生产环境需要异常监控,在连接函数捕获异常,打印ip和port,使用监控系统监控多个关键指标,如命令耗时、慢查询、持久化阻塞、拒绝连接、CPU内存网络磁盘使用过载等。内在原因redis数据结构使用不合理通过slowlog获取慢查询,改成低复杂度算法或将大对象拆分(......
  • JavaSE项目--图书管理系统代码
    结构代码展示Book类代码packagecom.xszx.beans;//实体类publicclassBook{privateintid;privateStringname;privateintbsum;publicBook(){}publicBook(intid,Stringname,intbsum){this.id=id;......
  • ATTACKS ON THIRD-PARTY APIS OF LARGE LANGUAGE MODELS
    本文是LLM系列文章,针对《ATTACKSONTHIRD-PARTYAPISOFLARGELANGUAGEMODELS》的翻译。对大型语言模型第三方api的攻击摘要1引言2提出的流水线3实验4结论摘要大型语言模型(LLM)服务最近开始提供一个插件生态系统来与第三方API服务交互。这项创新增强了LLM的能......
  • 全球石英振荡器行业现状、重点企业分析及项目可行性研究报告(2024-2030)
    2024年7月15日环洋市场咨询机构出版了一份详细的、综合性的调研分析报告【全球石英振荡器行业总体规模、主要厂商及IPO上市调研报告,2024-2030】。本报告研究全球石英振荡器总体规模,包括产量、产值、消费量、主要生产地区、主要生产商及市场份额,同时分析石英振荡器市场主要驱动......
  • AI绘画 IC-Light:图像打光控制和背景融合生产力工具,最全ComfyUI操作指南
    大家好,我是设计师阿威今天给大家分享一下AI绘画StableDiffusion当中的IC-Light,这是一款图像打光控制和背景融合的光影模型。IC-Ligh简介IC-Light是一款由Controlnet作者lllyasviel创作的最新作品,用于实现操控图像光照效果的项目。当前该项目已经发布了两种类型的模型:文......
  • SFTP一键添加脚本 (Duplicated 2024-07-15 12:39:10)
    創建腳本vimonekey_for_sftpuser.sh腳本內容#!/bin/bash#获取当前日期和时间CURRENT_DATE=$(date'+%Y年%m月%d日%H:%M:%S')echoecho"——————————————————————————————————————————————————————"echo"••......
  • SFTP一键添加脚本 (Duplicated 2024-07-15 12:39:10)
    創建腳本vimonekey_for_sftpuser.sh腳本內容#!/bin/bash#获取当前日期和时间CURRENT_DATE=$(date'+%Y年%m月%d日%H:%M:%S')echoecho"——————————————————————————————————————————————————————"echo"••......