当前位置:编程学习 > JAVA >>

java socket的一点疑惑

今天看了看java socket,发现了一点疑惑的问题,因为javasocket这块儿接触的比较少,所以求大神来帮忙。
1.java在创建一个socket server的时候可以传入一个ip地址,这个地址如果不是你本机的地址会出现什么情况?
2.看代码注释Creates a socket address where the IP address is the wildcard address and the port number a specified value.这里面 wildcard address又是什么意思,中文解释为通配地址,不是很明白。 --------------------编程问答-------------------- 难道socket连接必须是在本机上进行的吗?  我可以连接其他机子上的服务端,ip地址相应的就是远程机器上的ip
--------------------编程问答-------------------- 是不是本机就都两种情况
1、连接上  可以进行会话
2、没连接上   --------------------编程问答--------------------
引用 1 楼 xiaomm627 的回复:
难道socket连接必须是在本机上进行的吗?  我可以连接其他机子上的服务端,ip地址相应的就是远程机器上的ip

我说的是socket server,不是client,本机ip指的是运行这个server的机器ip --------------------编程问答--------------------
public ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException 

难道是这个构造方法?

如果主机只有一个IP地址,那么默认情况下,服务器程序就与该IP地址绑定。ServerSocket的第4个构造方法ServerSocket(int port, int backlog, InetAddress bindAddr)有一个bindAddr参数,它显式指定服务器要绑定的IP地址,该构造方法适用于具有多个IP地址的主机。假定一个主机有两个网卡,一个网卡用于连接到Internet, IP地址为222.67.5.94,还有一个网卡用于连接到本地局域网,IP地址为192.168.3.4。如果服务器仅仅被本地局域网中的客户访问,那么可以按如下方式创建ServerSocket: --------------------编程问答-------------------- 传入的地址 是作为服务器的地址 --------------------编程问答--------------------
引用 4 楼 oOrayOo 的回复:
public ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException 

难道是这个构造方法?

如果主机只有一个IP地址,那么默认情况下,服务器程序就与该IP地址绑定。ServerSocket的第4个构造方法ServerSocket(int port, int backlog, InetAddress bindAddr)有一个bindAddr参数,它显式指定服务器要绑定的IP地址,该构造方法适用于具有多个IP地址的主机。假定一个主机有两个网卡,一个网卡用于连接到Internet, IP地址为222.67.5.94,还有一个网卡用于连接到本地局域网,IP地址为192.168.3.4。如果服务器仅仅被本地局域网中的客户访问,那么可以按如下方式创建ServerSocket:

这个明白了,那通配地址又是什么意思,如果一个机器有两个网卡,系统又是怎么选择网卡来启动socket的呢? --------------------编程问答--------------------
引用 6 楼 wcs1989 的回复:
Quote: 引用 4 楼 oOrayOo 的回复:

public ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException 

难道是这个构造方法?

如果主机只有一个IP地址,那么默认情况下,服务器程序就与该IP地址绑定。ServerSocket的第4个构造方法ServerSocket(int port, int backlog, InetAddress bindAddr)有一个bindAddr参数,它显式指定服务器要绑定的IP地址,该构造方法适用于具有多个IP地址的主机。假定一个主机有两个网卡,一个网卡用于连接到Internet, IP地址为222.67.5.94,还有一个网卡用于连接到本地局域网,IP地址为192.168.3.4。如果服务器仅仅被本地局域网中的客户访问,那么可以按如下方式创建ServerSocket:

这个明白了,那通配地址又是什么意思,如果一个机器有两个网卡,系统又是怎么选择网卡来启动socket的呢?




引用 6 楼 wcs1989 的回复:
Quote: 引用 4 楼 oOrayOo 的回复:

public ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException 

难道是这个构造方法?

如果主机只有一个IP地址,那么默认情况下,服务器程序就与该IP地址绑定。ServerSocket的第4个构造方法ServerSocket(int port, int backlog, InetAddress bindAddr)有一个bindAddr参数,它显式指定服务器要绑定的IP地址,该构造方法适用于具有多个IP地址的主机。假定一个主机有两个网卡,一个网卡用于连接到Internet, IP地址为222.67.5.94,还有一个网卡用于连接到本地局域网,IP地址为192.168.3.4。如果服务器仅仅被本地局域网中的客户访问,那么可以按如下方式创建ServerSocket:

这个明白了,那通配地址又是什么意思,如果一个机器有两个网卡,系统又是怎么选择网卡来启动socket的呢?




区分的是各个网卡的地址,与网卡本身无关。 楼上说那个两个地址可能就分在两个不同的网卡上。 --------------------编程问答--------------------
引用 6 楼 wcs1989 的回复:
这个明白了,那通配地址又是什么意思,如果一个机器有两个网卡,系统又是怎么选择网卡来启动socket的呢?


... 你配置ip地址首先就必须制定在那个(逻辑)网络设备上设置ip地址。ip地址不可能脱离设备进行设定。
一个机器有两个网卡,那你在设置ip地址的时候首先选择了某个网卡(口)。

另外,ip地址与设备口本来也是多对多关系。 一个ip下可以用两块网卡(口),这叫双网卡(口)绑定。一个物理网卡口有多个ip更常见,因为可以虚拟多个逻辑设备在一个物理设别之上。

搞io不明白系统平台可不行啊。
--------------------编程问答--------------------
引用 8 楼 wfeng007 的回复:
Quote: 引用 6 楼 wcs1989 的回复:

这个明白了,那通配地址又是什么意思,如果一个机器有两个网卡,系统又是怎么选择网卡来启动socket的呢?


... 你配置ip地址首先就必须制定在那个(逻辑)网络设备上设置ip地址。ip地址不可能脱离设备进行设定。
一个机器有两个网卡,那你在设置ip地址的时候首先选择了某个网卡(口)。

另外,ip地址与设备口本来也是多对多关系。 一个ip下可以用两块网卡(口),这叫双网卡(口)绑定。一个物理网卡口有多个ip更常见,因为可以虚拟多个逻辑设备在一个物理设别之上。

搞io不明白系统平台可不行啊。

受教了
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,