golang之tcp自动重连实现方法

2018-10-15 17:34

阅读:793

操作系统: 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自动重连实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。


评论


亲,登录后才可以留言!