http-client.js
:
const http = require('http');
http.get
(
{
port : 9001,
host : 'localhost'
},
(res) =>
{
//...
}
);
tcp-server.js
:
const net = require('net');
let server = new net.Server();
server.listen(9001, 'localhost', (err) =>
{
console.log('Started listening', server.address());
});
server.on('connection', (sock) =>
{
console.log(`Connected ${sock.remoteAddress}:${sock.remotePort}`);
});
我运行node tc-server.js
,然后当我运行node http-client.js
时,我看到输出如下:
Started listening { address: '127.0.0.1', family: 'IPv4', port: 9001 }
Connected 127.0.0.1:59506
我关闭http-client.js
并再次运行node http-client.js
。我明白了:Connected 127.0.0.1:59508
我关闭服务器并再次运行,然后再次运行客户端,我看到Connected 127.0.0.1:59510
所以socket.remotePort
一直在增加。我不明白为什么这些端口数字,我期望看到9001
的端口号,因为这是发送http请求并成功到达侦听tcp服务器的地方。
答案 0 :(得分:1)
TCP会话的两个端都必须有一个地址和一个端口。例如,客户也使用端口。您If iRetval < 10 Then
FL_PERIOD = "0" & CStr(iRetVal)
Else
FL_PERIOD = CStr(iRetVal)
Endif
告诉您的是客户端使用其端口59506连接到您的端口9001.当您的服务器向客户端发送数据包时,它使用客户端的地址和端口号来解决它们,因此TCP层是客户端上的网络堆栈知道将数据包发送到哪个进程。 (the Wikipedia article on TCP中的更多信息。)您会看到数字的增加只是客户端系统如何为连接分配可用端口的副产品。
您通常不需要关心客户端的端口。