У меня возникают проблемы с подключением к локальному TLS-серверу golang через tls.dial или net.dial. Сервер запущен с адресом localhost: 10001, и я могу подключиться к нему с помощью netcat (просто netcat localhost 10001), но попытка использовать метод набора номера golangs не работает (соединение отклонено). Что могло быть причиной этого? Важно отметить, что я тестирую его на виртуальной машине Debian, где я деинсталлировал сетевой менеджер, чтобы я мог сам настраивать сетевые интерфейсы (статический IP-адрес). Я предполагаю, что у net.dial есть некоторые проблемы с поиском правильного интерфейса, но что делает netcat, чего нет у методов golang? Я перепробовал все типы адресов с обеих сторон (сервер на localhost, :: 1, 127.0.0.1; клиент такой же). В моей хост-системе Windows он работает (так что проблема, вероятно, не в сервере). Заранее спасибо.
conn, err := tls.Dial("tcp", h.IP+":"+h.Port, conf)
if err != nil {
log.Println(err)
return empty
}
// do cleanup
defer conn.Close()
d := Craft_PKG( data )
//write package
WriteChunks( conn, d )
это клиентский код и это
ln, err := tls.Listen("tcp", "localhost:"+(*port), config)
if err != nil {
log.Println(err)
return err
}
defer ln.Close()
for {
conn, err := ln.Accept()
if err != nil {
log.Println(err)
continue
}
// start the handler for every incoming connection
go h(conn)
}
код сервера. Все очень просто и работает с netcat и в моей хост-системе, как я уже упоминал.
не привязывайтесь к localhost
, привязывайтесь к определенному IP-адресу. Если h.IP
и адрес привязки сервера точно совпадают, то расширьте это до минимальный воспроизводимый пример.
Но почему он работает во всех других системах? Даже netcat может подключиться к серверу.
Какое сообщение об ошибке вы получаете при запуске кода? Он отлично работает на моей машине.
Он до сих пор не исправлен, и я понятия не имею, почему он не работает. Это должно быть связано с тем, что у go есть проблемы с интерфейсами. Оказывается, я просто не могу подключиться к серверу через net.dial, если дозвон происходит с того же хоста. Если я подключаюсь к нему с другой виртуальной машины с другим IP-адресом, он работает.
Пожалуйста, разместите здесь код, который вы пробовали.