Почему я не могу связать с 127.0.0.1 на Mac OS X?

Вероятно, необходимо начать с нахождения причины того, что они были из синхронизации. Возможно, они не, и сценарий является неправильным. При создании мира из некоторых случайных источников, это могло бы все еще быть вне синхронизации. Чтобы быть уверенными, Вы создали бы и установили бы и мир и ядро из того же источника, выполняющего шаги из Руководства. Источники с CD могли работать хорошо, но понижающий успешно не гарантируется, и мы не знаем деталей.

2
задан 6 February 2011 в 23:48
2 ответа

Это не точно ответ, начиная с него, doens't непосредственно решают Вас проблема..., но выглядит, как будто Ваша проблема конкретна к хитрости. Таким образом, на моем OS X 10,6 систем у меня есть та же проблема, Вы делаете использование кода хитрости от Вас пример. С другой стороны, следующее работает просто великолепно:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(('127.0.0.1', 8080))
s.listen(5)

c, addr = s.accept()
c.send('hello\n')
c.close()

Если я выполняю этот код, я вижу, что сокет слушает:

netstat -f inet -an | grep 8080
tcp4       0      0  127.0.0.1.8080         *.*                    LISTEN

И соединение с портом 8080 делает то, что Вы ожидали бы:

$ telnet localhost 8080
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
hello
Connection closed by foreign host.
2
ответ дан 3 December 2019 в 12:12

Действительно, в моём случае проблема в неинициализированных полях структуры, которые не имеют ничего общего с адресом семантического сокета.

Я добавил memset(&sa, 0, sizeof sa) и теперь он связывается.

Почти наверняка реализация Guile столкнулась с той же проблемой: инициализируя только задокументированные поля struct sockaddr_in. В любом случае, симптомы были точно такими же: INADDR_ANY связывание, но INADDR_LOOPBACK отказ с тем же errno.

Edit: извините, если я неясен; я имею в виду то, что я добавил к вопросу, который кто-то удалил. А именно, я столкнулся с точно такой же проблемой при реализации (по стечению обстоятельств) другого диалекта Lisp. Я добавил свои наблюдения вместе со следами отладочной сессии gdb, показывающими содержимое структуры sockaddr_in до вызова bind. В адресе правильно инициализированы поля sin_family, sin_addr и sin_port. Однако поле sin_len во главе структуры (присутствующее на Darwin, отсутствующее на других платформах) было неинициализировано, так же как и массив прокладок sin_zero в конце.

.
0
ответ дан 3 December 2019 в 12:12

Теги

Похожие вопросы