golang之tcp自动重连实现方法
2018-10-15 17:34
阅读:777
操作系统: CentOS 6.9_x64
go语言版本: 1.8.3
问题描述
现有一个tcp客户端程序,需定期从服务器取数据,但由于种种原因(网络不稳定等)需要自动重连。
测试服务器示例代码:
解决方案
/* tcp client with reconnect */ package main import ( net fmt bufio time ) func doTask(conn net.Conn) { for { fmt.Fprintf(conn,test msg\n) msg,err := bufio.NewReader(conn).ReadString(\n) if err != nil { fmt.Println(recv data error) break }else{ fmt.Println(recv msg : ,msg) } time.Sleep(1 * time.Second) } } func main() { hostInfo := 127.0.0.1:12345 for { conn,err := net.Dial(tcp,hostInfo) fmt.Print(connect (,hostInfo) if err != nil { fmt.Println() fail) }else{ fmt.Println() ok) defer conn.Close() doTask(conn) } time.Sleep(3 * time.Second) } }运行效果:
[root@local t1]# ./tcpClient1 connect (127.0.0.1:12345) ok recv msg : 2017-06-12 21:10:32.110977137 +0800 CST recv msg : 2017-06-12 21:10:33.111868746 +0800 CST recv data error connect (127.0.0.1:12345) fail connect (127.0.0.1:12345) fail connect (127.0.0.1:12345) ok recv msg : 2017-06-12 21:10:43.117203432 +0800 CST recv msg : 2017-06-12 21:10:44.11853427 +0800 CST讨论
这里只是个简单的示例代码,实现了tcp自动重连。
好,就这些了,希望对你有帮助。
以上这篇golang之tcp自动重连实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
上一篇:利用Go语言追加内容到文件末尾
评论
亲,登录后才可以留言!