Почему указанный Mac OS порт TCP не прослушивается? - PullRequest
0 голосов
/ 09 июня 2019

У меня проблема.

Я написал программу на C ++, указанный порт 60000.

m_pConn.sin_port = htons( 60000 );

и затем, когда программа (TCPFileSe) запустилась, я заметил, что LISTENING порт не 60000.

Вот мой список прослушивающих портов ..

christof-kims-Mac:~ christof-kim$ lsof -i | grep LISTEN
rapportd    639 christof-kim    3u  IPv4 0x1b8366a443833957      0t0  TCP *:49234 (LISTEN)
rapportd    639 christof-kim    4u  IPv6 0x1b8366a4437c0def      0t0  TCP *:49234 (LISTEN)
**TCPFileSe 24454 christof-kim    3u  IPv4 0x1b8366a446445957      0t0  TCP *:50087 (LISTEN)**

когда я запрограммировал второй запуск ..

christof-kims-Mac:~ christof-kim$ lsof -i | grep LISTEN
rapportd    639 christof-kim    3u  IPv4 0x1b8366a443833957      0t0  TCP *:49234 (LISTEN)
rapportd    639 christof-kim    4u  IPv6 0x1b8366a4437c0def      0t0  TCP *:49234 (LISTEN)
**TCPFileSe 24647 christof-kim    3u  IPv4 0x1b8366a446445957      0t0  TCP *:50117 (LISTEN)**

Я не понимаю, почему LISTENING порт не 60000.

Не могли бы вы помочь мне, почему LISTENING порт 50087, 50117? Или Mac OS не поддерживается указанным портом ???

Мне нужен указанный порт (например, 60000).

Этот код является просто написанным языком c ++ для Mac OS 10.13.6. Я пробовал использовать консольный инструмент Mac OS.

sockaddr_in m_pConn;

m_pConn.sin_family = AF_INET;
m_pConn.sin_addr.s_addr = inet_addr( "0.0.0.0" );
m_pConn.sin_port = htons( 60000 );

bind(m_nSocket, (struct sockaddr *) &m_pConn, sizeof(m_pConn));
socklen_t len = sizeof(m_pConn);

// Listen on the socket.
if ( listen( m_nSocket, 1 ) == -1 )
    printf( "Error listening on socket.\n");

1 Ответ

0 голосов
/ 10 июня 2019

Проблема в том, что я использовал using namespace std.

//using namespace std;

Итак, я добавил следующий код, и он затем заработал.

using std::ifstream;
using std::ios;

Возможно, проблема связана сthis: Сбой компиляции кода, использующего функцию сокета bind () с libcxx

...