TODO:Golang语言TCP/UDP协议重用地址端口
2016-11-30 00:00
239 查看
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出错)
- “STP主机文件上传下载工具”记录之——启动时错误“不能绑定socket,(因)地址和端口已经在使用”(1)
- TODO:Golang Linux进程退出说明
- C语言学习笔记----伊能C语言学习笔记----指针与地址的区别是什么?
- GO语言入门到精通(一)Golang环境搭建
- 【GoLang】GO语言系列--002.GO语言基础
- golang实战使用gin+xorm搭建go语言web框架restgo详解5.4 控制器参数绑定
- 常用stmp服务器地址和端口
- 【GoLang笔记】浅析Go语言Interface类型的语法行为及用法
- 解决使用adb命令提示“通常每个套接字地址(协议/网络地址/端口)只允许使用一次”错误
- golang中method的传值与传地址
- 此地址使用了一个通常用于网络浏览以外的端口。出于安全原因,Firefox 取消了该请求。
- golang实战使用gin+xorm搭建go语言web框架restgo详解10 使用restgo搭建后台管理系统
- 汇编语言的寻址地址方式 (长沙戴维营)
- golang语言并发与并行—goroutine和channel的详细理解
- 阿里云存储OSS golang语言上传文件示例。
- 安装apache出现的(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次” 错误