我知道Socket类可以通过这种方式实例化(作为示例):
new Socket("taranis", 7);
其中“taranis”是本地网络中服务器的名称。对此我有两个疑问:
1.如果我的计算机没有形成本地网络,但连接到 Internet,我可以使用计算机的 IP 地址来实例化套接字吗?
2.我的计算机如何获取本地网络中的名称?创建网络时是否为计算机指定名称?
附注我认为计算机可以自己建立网络(使用零配置)。然后谁给计算机命名,我如何提前知道这些名称(我需要它们来编写我的代码)。
最佳答案
是的,您可以使用 IP 地址创建套接字,您可以这样做:
new Socket("192.168.1.00",8888)
当您在计算机上安装操作系统时,操作系统要求您执行的步骤之一通常是为您的计算机命名。每个操作系统还可以在安装后更改这些名称。因此,您的每台计算机可能都有一个名称。然而,棘手的部分是让一台机器知道另一台机器的名称。这可以通过几种方式来完成。一种是使用 DNS server 。这有点像一个中间人,它将名称(即 Computer1)转换为其 IP 地址(192.1.168.1.100)。您也可以将这些映射保留在本地,您可以将其放在 hosts 中文件。这是名称和 IP 地址之间的映射,如果使用此方法,则需要确保这些主机文件在计算机上对齐。
Zeroconf是一个有趣的协议(protocol)。它的工作方式是一台计算机创建一个命名服务,第二台计算机只需按名称查找该服务,一旦找到该服务就可以连接到该服务。当服务被发现时,连接的客户端可以查询要连接的 IP 和端口。
关于java - 如何在Java中实例化一个Socket类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2303428/