net.createServer() 和 net.createConnection() 有什么区别?

What is the difference between net.createServer() and net.createConnection()?

我正在尝试创建一个简单的 TCP 客户端和服务器。从概念上讲,我知道 TCP 套接字在客户端和服务器端是相同的(至少,在 python 中是这样)。但是,创建套接字后的步骤不同。即,对于客户端,套接字建立到服务器的 TCP 连接。在服务器端,套接字绑定到特定端口,等待连接,当它收到请求时,它会创建一个新的连接套接字。 (如果我有任何错误,请纠正我,我是网络新手)。

我的问题是 net.Socketnet.Server 类 之间是否有任何区别。 node.js 是否将两者分开,而 net.Server 明确表示用于服务器?是否仍然可以使用 net.Socket 来制作 TCP 服务器套接字?

What is the difference between net.createServer() and net.createConnection()?

net.createConnection() 启动到某个其他主机或服务器的 出站 TCP 连接。

net.createServer() 设置一个服务器,它将接受来自其他主机或进程的 传入 TCP 连接。

这些是启用连接的两端。

My question is if there's any difference between the net.Socket and net.Server classes.

是的,它们之间存在巨大差异,因为两者都不能替代另一个。服务器 侦听入站连接

客户端然后创建一个 TCP 套接字并尝试连接到一个服务器,该服务器正在侦听服务器正在侦听的端口和 IP 地址上的入站连接。在连接过程中,服务器遵循 TCP 握手过程以启用连接客户端和服务器的 TCP 套接字的创建。该 TCP 套接字是双向的,因此任一端都可以向另一端发送数据。

Nodejs 使用 net.Socket class 作为 nodejs 对象来表示 TCP 套接字,因此当您从客户端发起连接时,您会得到一个表示您的 TCP 的 net.Socket 对象连接到其他服务器。当您是服务器并且有人连接到您时,您会得到一个 net.Socket 对象,它表示您与连接到您的客户端的 TCP 连接。这两个对象是 TCP 连接的不同端点,两端不必是 nodejs 端点——它们可以是任何可以建立标准 TCP 连接的语言或工具。

Did node.js separate the two, and net.Server is explicitly meant for servers? Is it still possible to use net.Socket to make the TCP server socket?

是的,net.Server 专供服务器为主机上特定端口上的入站连接设置侦听器。

net.socket 本身无法侦听传入连接(您为此使用 net.Server 上的一个实例。它要么用于启动到某个服务器的 TCP 连接,要么作为一些客户端连接到您的服务器。