Предположим, мы пытаемся связаться с сервером (XMPP), который отправляет данные XML. Мы можем использоватьКак читать данные (xml), отправленные сервером, если он не отправляет новую строку
conn, err := net.Dial("tcp", s.Addr+":5222")
//...
r := bufio.NewReader(conn)
//...
s, err := s.R.ReadString(10) // to read a string
Но есть одна проблема, что сервер не отправляет символ \ 10 (новая строка). Я также пробовал 12, но не повезло. То же самое касается функции readLine, поскольку она также зависит от \ 10. Итак, как мне читать данные, отправленные сервером? Я попытался использовать '>' в качестве разделителя и смог получить только части сообщений (предсказуемые). У меня возникла идея цикла, когда ошибка равна нулю, и используйте разделитель '>', но он также не работает. Мои исследования показали, что последний символ сообщения действительно «>» (62), и в конце ничего больше нет.
Не следует «возвращать err' быть« return nil, err'? –
@ SanjayT.Sharma Это должно быть 'return xml.StartElement {}, err'. Спасибо, что указал на проблему. –