我有问题。
我用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)。
这段代码只是为Mac OS 10.13.6编写的语言c ++。 我已经尝试过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");
答案 0 :(得分:0)
问题是我使用了using namespace std
。
//using namespace std;
因此,我添加了以下代码,然后它开始工作。
using std::ifstream;
using std::ios;
问题可能与此有关: Compiling code that uses socket function bind() with libcxx fails