美文网首页Golang 开发者golangGolang
TODO:Golang语言TCP/UDP协议重用地址端口

TODO:Golang语言TCP/UDP协议重用地址端口

作者: OneTODO | 来源:发表于2016-11-29 22:48 被阅读286次

TODO:Golang语言TCP/UDP协议重用地址端口

这是一个简单的包来解决重用地址的问题。 go net包(据我所知)不允许设置套接字选项。 这在尝试进行TCP NAT时尤其成问题,其需要在同一TCP端口上进行侦听和拨号的过程。 这个包使我有可能实现这个功能。 这是一个非常小众的用例,但也许这个软件包可以随着时间的推移变得更普遍。

此包允许从同一TCP端口侦听和拨号;不能使用同一UDP端口监听,但可以监听同一UDP端口。 这意味着设置了以下sockopts:

syscall.SO_REUSEADDR

syscall.SO_REUSEPORT

例子:

// listen on the same port.

l1, _ := reuse.Listen(“tcp”, “127.0.0.1:1234”)

l2, _ := reuse.Listen(“tcp”, “127.0.0.1:1234”)

// dial from the same port.

l1, _ := reuse.Listen(“tcp”, “127.0.0.1:1234”)

l2, _ := reuse.Listen(“tcp”, “127.0.0.1:1235”)

c1, _ := reuse.Dial(“tcp”, “127.0.0.1:1234”, “127.0.0.1:1235”)

c2, _ := reuse.Dial(“tcp”, “127.0.0.1:1234”, “127.0.0.1:1235”)

以下是完整TCP拨号例子,在Ubuntu 14.04 Sever测试通过

Server代码:

Client代码:

如果你有需要重用TCP/UDP的地址和端口的场景,可以尝试一下这个包,希望可以让你达到事半功倍的效果。


wxgzh:ludong86

相关文章

  • TODO:Golang语言TCP/UDP协议重用地址端口

    TODO:Golang语言TCP/UDP协议重用地址端口 这是一个简单的包来解决重用地址的问题。 go net包(...

  • TCP

    TCP和UDP端口可以重复 TCP/IP协议中端口,范围从0到65535 TCP和UDP的区别 TCP协议需要创建...

  • 07.网络编程-1.网络基础

    1、知识点 tcp/ip协议介绍 ip地址的分类 端口、 端口号 (重点)socket (重点)udp通信 (重点...

  • iOS IP地址&端口号&网络模型&Socket

    一、IP地址 二、端口号 三、网络模型 TCP/IP网络模型 传输协议TCP\UDP 四、Socket 详情可去此...

  • socket层的一些疑问

    背景知识: 互联网协议:链路(加mac地址)、IP(加ip地址)、TCP/UDP(加端口)、应用层协议(各自的结构...

  • 计算机网络_4

    应用程序通信五要素: 源IP地址,源端口,协议,目的IP地址,目的端口。 UDP/TCP的资料太多了,不整理了,贵...

  • 开启Socket学习之旅

    什么是socket socket就是我们常说的套接字IP地址+ 协议(TCP/UDP) + 端口 == 我们就称...

  • iOS Socket

    Socket(套接字)是通讯协议.通过IP地址,和端口号进行锁定传输数据.Socket支持TCP/UDP协议,一个...

  • Socket

    网络通信三要素: IP地址、端口号、传输协议TCP、UDP协议 Socket通信流程: Server:1.创建so...

  • TCP && UDP

    TCP和UDP对应的协议 TCP对应的协议: (1) ** FTP ** :定义了文件传输协议,使用 21 端口。...

网友评论

    本文标题:TODO:Golang语言TCP/UDP协议重用地址端口

    本文链接:https://www.haomeiwen.com/subject/tpuzpttx.html