послушайте () без вызова, связывают ()

Z-индекс требует позиционирования. Добавьте position: relative; к кнопке. Вам также нужно будет увеличить значение z-index, так как для модального поля установлено значение z-index: 1050;, а для кнопки требуется более высокое значение, чтобы оно отображалось над модальным слоем.

10
задан Claudiu 12 April 2009 в 00:35
поделиться

3 ответа

Вызовы работают, но поскольку вы не связали сокет явно, операционная система или системная библиотека неявно назначили вам порт и привязку по умолчанию (точно так же, как при вызове connect (2) без сначала вызов bind (2) . Кроме того, так как вы уже спрашивали о TCP, я полагаю, вы здесь мы говорим об интернет-сокетах.

Чтобы узнать, какое имя ОС ограничивает сокет, зависит от операционной системы, поэтому вам придется искать вашу конкретную ОС, но большинство операционных систем предоставляют netstat или похожий инструмент, который вы можете использовать для запроса, какие приложения прослушивают какие порты.,

Как Джон упоминает в комментарии, вы можете использовать getsockname (2) , чтобы найти имя привязанного сокета. Вот краткий пример:

// ...

// Create socket and set it to listen (we ignore error handling for brevity)
int sock = socket(AF_INET, SOCK_STREAM, 0);
listen(sock, 10);

// Sometime later we want to know what port and IP our socket is listening on
socklen_t addr_size = sizeof(struct sockaddr_in);
struck sockaddr_in addr;
getsockname(sock, (struct sockaddr *)&addr, &addr_size);

addr теперь будет содержать IP-адрес и порт, который прослушивает ваш сокет.

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

Как упоминает Джон в комментарии, вы можете использовать getsockname (2 ) , чтобы найти имя связанного сокета. Вот краткий пример:

// ...

// Create socket and set it to listen (we ignore error handling for brevity)
int sock = socket(AF_INET, SOCK_STREAM, 0);
listen(sock, 10);

// Sometime later we want to know what port and IP our socket is listening on
socklen_t addr_size = sizeof(struct sockaddr_in);
struck sockaddr_in addr;
getsockname(sock, (struct sockaddr *)&addr, &addr_size);

addr теперь будет содержать IP-адрес и порт, который прослушивает ваш сокет.

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

Как упоминает Джон в комментарии, вы можете использовать getsockname (2 ) , чтобы найти имя связанного сокета. Вот краткий пример:

// ...

// Create socket and set it to listen (we ignore error handling for brevity)
int sock = socket(AF_INET, SOCK_STREAM, 0);
listen(sock, 10);

// Sometime later we want to know what port and IP our socket is listening on
socklen_t addr_size = sizeof(struct sockaddr_in);
struck sockaddr_in addr;
getsockname(sock, (struct sockaddr *)&addr, &addr_size);

addr теперь будет содержать IP-адрес и порт, который прослушивает ваш сокет.

12
ответ дан 3 December 2019 в 22:39
поделиться

Как уже упоминалось, ОС назначит порт, если вы его не связываете (). Вы можете использовать вызов getsockname () после listen (), чтобы увидеть, какой адрес / порт назначен. Затем, если вы сообщили этот адрес / порт клиенту, он мог бы подключиться.

Так что имеет смысл, что это работает. Вы могли бы написать программу, где это было бы интересно.

3
ответ дан 3 December 2019 в 22:39
поделиться

Я подозреваю, что вы никогда не получите соединение. Вы можете проверить, прослушивается ли новый сокет, выполнив эквивалент «netstat -an» в вашей ОС до и после запуска программы.

Я попробовал то же самое в C #:

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Listen(1);
socket.Accept();

Я получил исключение для вторая строка, которая окольным путем сообщает мне, что требуется Bind. Это, конечно, хорошо работает с:

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(new IPEndPoint(IPAddress.Loopback, 4567));
socket.Listen(1);
socket.Accept();

Я также тестировал с сокетом Udp, и то же самое, Windows не удовлетворена вызовом Listen, если не было выполнено связывание. Поскольку вызовы сокетов .Net являются просто оболочкой для Winsock, такое поведение, вероятно, будет одинаковым для всех производных от Winsock библиотек в Windows.

0
ответ дан 3 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

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