func connectCom() {
for {
c, err := net.DialTCP(tcpProtocol, nil, connectAddr)
buf := bufio.NewReader(c)
for {
msg, err := buf.Peek(readWriterSize)
//msg, _, err := buf.ReadLine() так тоже не работает
if err != nil {
break // io.EOF - соединение прервано со стороны сервера
}
...
}
time.Sleep(10 * time.Second)
}
}
msg, err := buf.Peek(readWriterSize)
Обнаружил нюанс при перезагрузке сервера, клиент не видит ошибки и висит бесконечно, соответственно не переподключается при старте серверной части.
Ща гуру подтянутся, может поизящнее варианты подскажут.
--
Вы получили это сообщение, поскольку подписаны на группу Golang Russian.
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес golang-ru+...@googlegroups.com.
Просмотреть это обсуждение в Сети можно по адресу https://groups.google.com/d/msgid/golang-ru/cf14a4c8-a5d3-843e-d570-3a395c6e918a%40gmail.com.
--
Вы получили это сообщение, поскольку подписаны на группу "Golang Russian".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес golang-ru+...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/golang-ru/7dac91be-65a6-4e57-9407-b51768a058b6%40googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/golang-ru/CAJqqVEVzhgM4UXFDXXJnyeDt3migq6sGvh9E5Pesx_RM2df7Gg%40mail.gmail.com.
но и без сотового инета все чаще ттакая ситуация, на nat
Добрый день.А какой смысл в buf := bufio.NewReader(c) почему нельзя читать просто из сокета?
вс, 25 авг. 2019 г. в 21:39, Дмитрий Фролов <frolov....@gmail.com>:
Упрощенный пример функции клиента, который подключается к серверу и ждет команды:--
func connectCom() {
for {
c, err := net.DialTCP(tcpProtocol, nil, connectAddr)
buf := bufio.NewReader(c)
for {
msg, err := buf.Peek(readWriterSize)
//msg, _, err := buf.ReadLine() так тоже не работает
if err != nil {
break // io.EOF - соединение прервано со стороны сервера
}
...
}
time.Sleep(10 * time.Second)
}
}Если серверную часть останавливаю в отладчике, или прибиваю уже скомпилированный и запущенный файл на линуксе (kill pid), клиент на строкеmsg, err := buf.Peek(readWriterSize)возвращает ошибку, далее снова пытается подключиться.Обнаружил нюанс при перезагрузке сервера, клиент не видит ошибки и висит бесконечно, соответственно не переподключается при старте серверной части.
Вы получили это сообщение, поскольку подписаны на группу "Golang Russian".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес gola...@googlegroups.com.
разные варианты обрыва соединения и как на это реагирует система клиента и сервера
func testConnect(c *net.TCPConn) {
for {
_, err := c.Write([]byte("up\n"))
if err != nil {
return
}
time.Sleep(60 * time.Second)
}
}