TODO:Golang语言TCP/UDP协议重用地址端口
2016-11-30 10:41
211 查看
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
这是一个简单的包来解决重用地址的问题。 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协议重用地址端口
- 端口重用 C++ (地址重用)
- socket地址和端口重用(造成bind出错)
- C 语言指针与汇编地址(一)
- 各邮箱smtp、p0p3服务器地址和端口
- 汇编语言学习笔记(随笔记) 端口
- Golang 1.5 正式版网盘下载地址
- gslang——原生golang/RPC描述语言简介
- 算法代码实现之插入排序,Golang(Go语言)实现
- 端口02 - 零基础入门学习汇编语言68
- 分享| Go语言(golang)的认识,跟学习资料及其开发工具
- c语言中查看输入输入地址
- Win10 Build 10532语言包官方下载地址汇总
- 综合使用套接字选项的例子,如设置套接字选项大小,设置套接字地址重用
- (2) linux 3.x - client - TCP连接建立系列 — 客户端的端口选取和重用
- Cisco交换机里IP和MAC地址互查找出对应端口
- linux端口重用
- C 语言栈内存无法向父函数传递地址问题 [李园7舍_404]
- golang实战使用gin+xorm搭建go语言web框架restgo详解5.3 资源控制器