java - 如何在Java中实例化一个Socket类?

标签 java networking constructor sockets instantiation

我知道Socket类可以通过这种方式实例化(作为示例):

new Socket("taranis", 7);

其中“taranis”是本地网络中服务器的名称。对此我有两个疑问:


1.如果我的计算机没有形成本地网络,但连接到 Internet,我可以使用计算机的 IP 地址来实例化套接字吗?


2.我的计算机如何获取本地网络中的名称?创建网络时是否为计算机指定名称?

附注我认为计算机可以自己建立网络(使用零配置)。然后谁给计算机命名,我如何提前知道这些名称(我需要它们来编写我的代码)。

最佳答案

  1. 是的,您可以使用 IP 地址创建套接字,您可以这样做:new Socket("192.168.1.00",8888)

  2. 当您在计算机上安装操作系统时,操作系统要求您执行的步骤之一通常是为您的计算机命名。每个操作系统还可以在安装后更改这些名称。因此,您的每台计算机可能都有一个名称。然而,棘手的部分是让一台机器知道另一台机器的名称。这可以通过几种方式来完成。一种是使用 DNS server 。这有点像一个中间人,它将名称(即 Computer1)转换为其 IP 地址(192.1.168.1.100)。您也可以将这些映射保留在本地,您可以将其放在 hosts 中文件。这是名称和 IP 地址之间的映射,如果使用此方法,则需要确保这些主机文件在计算机上对齐。

  3. Zeroconf是一个有趣的协议(protocol)。它的工作方式是一台计算机创建一个命名服务,第二台计算机只需按名称查找该服务,一旦找到该服务就可以连接到该服务。当服务被发现时,连接的客户端可以查询要连接的 IP 和端口。

关于java - 如何在Java中实例化一个Socket类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2303428/

相关文章:

java - 我应该将 RMI 用于 Java 多人游戏吗?

python - __init__() 缺少 1 个必需的位置参数

java - 使用正则表达式从 Java 中的引号中提取两个字符串?

java.lang.IndexOutOfBoundsException : Index: 1, 大小:1

c# - 如何使用 C# 中的代码更改网络设置(IP 地址、DNS、WINS、主机名)

java - 如何在未初始化对象的构造函数中调用对象方法?

c++ - 使用 {a,b,c} 作为参数的构造函数或 {a,b,c} 实际上在做什么?

java - 如何动态决定我想要多少个循环?

java - JSR-356 : How to abort a websocket connection during the handshake?

networking - 什么是连接?