Go net.dial проблема

У меня возникают проблемы с подключением к локальному 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 и в моей хост-системе, как я уже упоминал.

Пожалуйста, разместите здесь код, который вы пробовали.

Himanshu 06.07.2018 12:01

не привязывайтесь к localhost, привязывайтесь к определенному IP-адресу. Если h.IP и адрес привязки сервера точно совпадают, то расширьте это до минимальный воспроизводимый пример.

JimB 06.07.2018 16:38

Но почему он работает во всех других системах? Даже netcat может подключиться к серверу.

gbatt 06.07.2018 19:52

Какое сообщение об ошибке вы получаете при запуске кода? Он отлично работает на моей машине.

Daniel Schütte 08.07.2018 00:41

Он до сих пор не исправлен, и я понятия не имею, почему он не работает. Это должно быть связано с тем, что у go есть проблемы с интерфейсами. Оказывается, я просто не могу подключиться к серверу через net.dial, если дозвон происходит с того же хоста. Если я подключаюсь к нему с другой виртуальной машины с другим IP-адресом, он работает.

gbatt 08.07.2018 09:36
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
2
5
726
0

Другие вопросы по теме