Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js net.createServer()和net.createConnection()之间有什么区别?_Node.js_Sockets_Network Programming - Fatal编程技术网

Node.js net.createServer()和net.createConnection()之间有什么区别?

Node.js net.createServer()和net.createConnection()之间有什么区别?,node.js,sockets,network-programming,Node.js,Sockets,Network Programming,我试图创建一个简单的TCP客户端和服务器。从概念上讲,我知道TCP套接字在客户端和服务器端都是相同的(至少在python中是这样)。但是,创建套接字后的步骤是不同的。即,对于客户端,套接字建立到服务器的TCP连接。在服务器端,套接字绑定到一个特定端口,并等待连接,当它收到请求时,它会创建一个新的连接套接字。(如果我有什么错误,请纠正我,我是网络新手) 我的问题是net.Socket和net.Server类之间是否有任何区别。node.js是否将两者分开,net.Server是否明确用于服务器?仍

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

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

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

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

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

这些是启用连接的两端

我的问题是net.Socket和net.Server类之间是否有任何区别

是的,它们之间有着巨大的区别,因为两者都不是另一个的替代品。服务器侦听入站连接

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

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

node.js是否将两者分开,net.Server是否明确用于服务器?仍然可以使用net.Socket创建TCP服务器套接字吗

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


net.socket本身无法侦听传入的连接(您可以使用
net.Server
上的一个实例来实现这一点。它要么用于启动到某个服务器的TCP连接,要么作为连接到您的服务器的某个客户端的一部分创建。

因此,如果我绘制一个关于一个服务器和一个客户端之间发生的事情的心理图:客户端上有一个
net.Socket
对象,还有一个
net.Socket
对象和服务器上的一个
net.Server
对象。这两个
net.Socket
对象是客户端和服务器使用的对象,而
net.Server
对象只是保持打开状态,监听其他入站连接。@pastacompany-是的,这是正确的。您可以将
net.Server
视为accep的工厂终止入站连接并创建服务器端
net.Socket
,以完成TCP连接,然后允许它以任何方式发送数据。