iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Golang端口复用测试的实现方法
  • 799
分享到

Golang端口复用测试的实现方法

2023-06-14 08:06:20 799人浏览 安东尼
摘要

小编给大家分享一下golang端口复用测试的实现方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!先给出结论:同一个进程,使用一个端口,然后连接关闭,大约需要30

小编给大家分享一下golang端口复用测试的实现方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

先给出结论:

同一个进程,使用一个端口,然后连接关闭,大约需要30s后才可再次使用这个端口。

测试

首先使用端口9001连接服务端,发送数据,然后关闭连接,接着再次使用端口9001连接服务端,如果连接失败,间隔15s后,再次尝试,最多尝试3次,。

client

package mainimport ( "bufio" "fmt" "net" "os" "time")func DialCustom(network, address string, timeout time.Duration, localIP []byte, localPort int)(net.Conn,error) { netAddr := &net.tcpAddr{Port:localPort} if len(localIP) != 0 { netAddr.IP = localIP } fmt.Println("netAddr:", netAddr) d := net.Dialer{Timeout: timeout, LocalAddr: netAddr} return d.Dial(network, address)}func getOneConn() { serverAddr := "127.0.0.1:8080" // 172.28.172.180 //localIP := []byte{0xAC, 0x1C, 0xAC, 0xB4} // IP localIP := []byte{} // any IP localPort := 9001 var conn net.Conn var err error for i:=0;i<3;i++{ conn, err = DialCustom("tcp", serverAddr, time.Second*10, localIP,localPort) if err != nil { fmt.Println("dial failed:", err) if i == 2 { os.Exit(1) } time.Sleep(15*time.Second) } else { break } } defer conn.Close() buffer := make([]byte, 512) reader := bufio.NewReader(conn) n, err2 := reader.Read(buffer) if err2 != nil { fmt.Println("Read failed:", err2) return } fmt.Println("count:", n, "msg:", string(buffer))}func main() { getOneConn() fmt.Println("=========================") getOneConn() fmt.Println("=========================") select{}}

server

package mainimport ( "fmt" "net" "log")func main() { addr := "0.0.0.0:8080" tcpAddr, err := net.ResolveTCPAddr("tcp",addr) if err != nil { log.Fatalf("net.ResovleTCPAddr fail:%s", addr) } listener, err := net.ListenTCP("tcp", tcpAddr) if err != nil { log.Fatalf("listen %s fail: %s", addr, err) } else {  log.Println("rpc listening", addr) } for { conn, err := listener.Accept() if err != nil { log.Println("listener.Accept error:", err) continue }  Go handleConnection(conn)  }}func handleConnection(conn net.Conn) { //defer conn.Close() var buffer []byte = []byte("You are welcome. I'm server.") n, err := conn.Write(buffer) if err != nil {  fmt.Println("Write error:", err) } fmt.Println("send:", n) fmt.Println("connetion end")}

output

client输出:

$ ./client
netAddr: :9001
count: 28 msg: You are welcome. I'm server.
=========================
netAddr: :9001
dial failed: dial tcp :9001->127.0.0.1:8080: bind: address already in use


netAddr: :9001
dial failed: dial tcp :9001->127.0.0.1:8080: bind: address already in use

netAddr: :9001
count: 28 msg: You are welcome. I'm server.
=========================

经过3次重试,30s后,才可以重新使用同一个端口9001进行连接。也就是同一个进程的情况狂下,一个连接关闭后,端口大约30s后才可以被使用。

以上是“Golang端口复用测试的实现方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网GO频道!

您可能感兴趣的文档:

--结束END--

本文标题: Golang端口复用测试的实现方法

本文链接: https://www.lsjlt.com/news/269256.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Golang端口复用测试的实现方法
    小编给大家分享一下Golang端口复用测试的实现方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!先给出结论:同一个进程,使用一个端口,然后连接关闭,大约需要30...
    99+
    2023-06-14
  • Golang 端口复用测试的实现
    先给出结论: 同一个进程,使用一个端口,然后连接关闭,大约需要30s后才可再次使用这个端口。 测试 首先使用端口9001连接服务端,发送数据,然后关闭连接,接着再次使用端口9001...
    99+
    2024-04-02
  • Golang实现单元测试中的接口层
    目录环境代码base case单元测试工具方法单元测试问题优化点总结上次我们已经搞定了逻辑层的单元测试,这次我们来康康接口层的单元测试。接口层主要负责的就是请求的处理,最常见的就是 ...
    99+
    2023-03-11
    Golang单元测试 接口层 Golang单元测试 Golang接口层
  • 用于测试的 golang 接口
    php小编草莓为您介绍一款用于测试的golang接口。在软件开发过程中,测试是不可或缺的环节,而这款接口则提供了便捷的测试功能。通过该接口,开发人员可以快速检验代码的正确性和稳定性,提...
    99+
    2024-02-09
  • Net Core后端单元测试的实现方法
    这篇文章主要介绍了Net Core后端单元测试的实现方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. 前言单元测试一直都是"好处大家都知道很多,但是因为种种原...
    99+
    2023-06-08
  • Golang如何实现单元测试中的接口层
    这篇文章主要介绍“Golang如何实现单元测试中的接口层”,在日常操作中,相信很多人在Golang如何实现单元测试中的接口层问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Golang如何实现单元测试中的接口层...
    99+
    2023-07-05
  • golang端口占用检测的使用
             在运维开发的过程中,经常碰到这样的情况:启动某个应用前,需要先检测一下端口...
    99+
    2024-04-02
  • 基于端口的虚拟主机测试方法是什么
    基于端口的虚拟主机测试方法是通过使用不同的端口号来模拟多个虚拟主机,在同一台物理主机上运行多个网站。以下是基于端口的虚拟主机测试方法...
    99+
    2023-08-22
    虚拟主机
  • SpringBoot+TestNG单元测试的实现方法
    这篇文章主要讲解了“SpringBoot+TestNG单元测试的实现方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot+TestNG单元测试的实现方法”吧!目录背景接口测...
    99+
    2023-06-20
  • python使用unittest测试接口步奏的方法
    小编给大家分享一下python使用unittest测试接口步奏的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!这次给大家带来...
    99+
    2024-04-02
  • windowsserver2008开启端口的实现方法
    windows server 2008大多数端口都是默认关闭的,这里我们使用tomcat的8080端口为例,演示如何开启一个端口 打开服务器管理器->配置->高级安全wi...
    99+
    2024-04-02
  • 试了下Golang实现try catch的方法
    目录前言能不能 try catch加入处理异常方法总结前言 Golang语言有诸多优点:静态编译、协程、堪比c语言的高性能。 但是也有一些令人发指的地方 —— 经常被人调侃 五行...
    99+
    2024-04-02
  • Golang接口实现的方法是什么
    这篇文章主要介绍“Golang接口实现的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Golang接口实现的方法是什么”文章能帮助大家解决问题。Golang 接口是什么和C++、Java等...
    99+
    2023-07-05
  • Maven打包跳过测试的实现方法
    目录一、命令行方式跳过测试二、pom.xml中配置跳过测试三、Idea中配置跳过测试1、直接配置2、更改Maven配置方式参考:使用Maven打包的时候,可能会因为单元测试打包失败,...
    99+
    2024-04-02
  • java调用dubbo接口测试的方法是什么
    在Java中调用Dubbo接口进行测试有以下几种方法:1. 使用Dubbo提供的测试框架:Dubbo提供了一个Mock框架,可以用于...
    99+
    2023-10-20
    java dubbo
  • 前端vue3使用axios调用后端接口的实现方法
    目录前言:第一步:在src下创建一个http文件夹,创建一个config的js文件!第二步:在src下创建一个http文件夹,创建一个axios的js文件!第三步:在src下创建一个...
    99+
    2022-12-08
    vue使用axios调用后端接口 axios调用后端接口 vue调用后端接口
  • springboot vue前后端接口测试树结点添加功能的方法
    这篇文章主要讲解了“springboot vue前后端接口测试树结点添加功能的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“springboot vue前后端接口测试...
    99+
    2023-06-30
  • Golang实现单元测试中的逻辑层
    目录准备工作基本 case 代码生成 mock 接口编写单元测试优化mockgen总结前面我们完成了最麻烦的数据层的单元测试,今天我们来看看单元测试中最容易做的一层,数据逻辑层,也就...
    99+
    2023-03-10
    Golang单元测试 逻辑层 Golang单元测试 Go 单元测试
  • JunitMockito实现单元测试方法介绍
    目录一、前言二、JUnit 框架三、Mockito 框架3.1 使用 Mockito 创建 mock 对象3.2 使用 mock 对象实践单元测试3.3 使用 PowerMock m...
    99+
    2024-04-02
  • Oracle RMAN恢复测试的方法教程
    本篇内容主要讲解“Oracle RMAN恢复测试的方法教程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle RMAN恢复测试的方法教程”吧!1 启动归...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作