java socket的一点疑惑

问题描述

今天看了看javasocket,发现了一点疑惑的问题,因为javasocket这块儿接触的比较少,所以求大神来帮忙。1.java在创建一个socketserver的时候可以传入一个ip地址,这个地址如果不是你本机的地址会出现什么情况?2.看代码注释CreatesasocketaddresswheretheIPaddressisthewildcardaddressandtheportnumberaspecifiedvalue.这里面wildcardaddress又是什么意思,中文解释为通配地址,不是很明白。

解决方案

解决方案二:
难道socket连接必须是在本机上进行的吗?我可以连接其他机子上的服务端,ip地址相应的就是远程机器上的ip
解决方案三:
是不是本机就都两种情况1、连接上可以进行会话2、没连接上
解决方案四:
引用1楼xiaomm627的回复:

难道socket连接必须是在本机上进行的吗?我可以连接其他机子上的服务端,ip地址相应的就是远程机器上的ip

我说的是socketserver,不是client,本机ip指的是运行这个server的机器ip
解决方案五:
publicServerSocket(intport,intbacklog,InetAddressbindAddr)throwsIOException

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

publicServerSocket(intport,intbacklog,InetAddressbindAddr)throwsIOException

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

这个明白了,那通配地址又是什么意思,如果一个机器有两个网卡,系统又是怎么选择网卡来启动socket的呢?
解决方案八:
引用6楼wcs1989的回复:

Quote: 引用4楼oOrayOo的回复:
publicServerSocket(intport,intbacklog,InetAddressbindAddr)throwsIOException

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

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

引用6楼wcs1989的回复:

Quote: 引用4楼oOrayOo的回复:
publicServerSocket(intport,intbacklog,InetAddressbindAddr)throwsIOException

难道是这个构造方法?如果主机只有一个IP地址,那么默认情况下,服务器程序就与该IP地址绑定。ServerSocket的第4个构造方法ServerSocket(intport,intbacklog,InetAddressbindAddr)有一个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不明白系统平台可不行啊。

受教了
解决方案十一:
现在流行不给分了?-。-
解决方案十二:
引用10楼wfeng007的回复:

现在流行不给分了?-。-

楼主八成领了答案忘了结贴了,习惯就好。。

时间: 2024-09-09 13:39:52

java socket的一点疑惑的相关文章

Java函数调用的一点疑惑,求Java大神解答

问题描述 在Java,如果有两个函数如下:voidf(Integeri){}voidf(Floatf){} 如果调用f(1),JVM知道去调用第一个函数但是如果换成是下面两个函数voidf(Integer...args){}voidf(Float...args){} 这时如果调用f(1),javac爆函数歧义但是如果再次换成下面两个函数voidf(Integer...args){}voidf(Object..args){} 这时调用f(1),就可以正常调用第一个函数或者换成下面两个函数voidf

对JAVA单线程的一点疑惑?

问题描述 最近在看<java网络编程>,其中第五章讲到多线程时举得一个例子看不懂,还望大神帮忙看一下.先谢谢啦先贴上代码importjava.io.*;importjava.security.*;importjava.util.*;classReturnDigestextendsThread{privateFileinput;publicReturnDigest(Fileinput){this.input=input;}publicvoidrun(){try{FileInputStreamin

Java socket编程入门

编程 第一章:学习提示 我适合学习这份教程吗 Socket提供了两台计算机之间进行通讯的机制,在James Gosling注意Java语言之前就已经很闻名了.Java语言使你更简单有效的使用Socket开发而无需了解操作系统的底层机制.大部分讨论Java编码的书籍都没有涉及这一主题,或者是只是"点到为止",留给读者大量的想象空间.这份教程就是让你了解在你的Java代码中如何更有效的使用Socket所需的知识.包含以下内容: •什么是Socket •它位于你的应用程序的哪些地方 •能正常

Java socket编程入门[1]

编程 第一章:学习提示 我适合学习这份教程吗 Socket提供了两台计算机之间进行通讯的机制,在James Gosling注意Java语言之前就已经很闻名了.Java语言使你更简单有效的使用Socket开发而无需了解操作系统的底层机制.大部分讨论Java编码的书籍都没有涉及这一主题,或者是只是"点到为止",留给读者大量的想象空间.这份教程就是让你了解在你的Java代码中如何更有效的使用Socket所需的知识.包含以下内容:•什么是Socket•它位于你的应用程序的哪些地方•能正常运行的

JUC中Atomic class之lazySet的一点疑惑

JUC中Atomic class之lazySet的一点疑惑 最近再次翻netty和disrupt的源码, 发现一些地方使用AtomicXXX.lazySet()/unsafe.putOrderedXXX系列, 以前一直没有注意lazySet这个方法, 仔细研究一下发现很有意思.我们拿AtomicReferenceFieldUpdater的set()和lazySet()作比较, 其他AtomicXXX类和这个类似. public void set(T obj, V newValue) { // .

ie兼容-关于IE条件语句的一点疑惑

问题描述 关于IE条件语句的一点疑惑 经常在网站头部看到类似于这样的IE条件注释: <!--[if IE 7 ]><html lang=""zh"" id=""ne_wrap"" class=""no-js ie7""><![endif]--> 虽然能够理解该注释语法:在浏览器版本为ie7时,应用该代码,非ie浏览器则只把其当做一条注释而忽略掉.但不太

用Java Socket开发支持上千个并发的小型服务器(上)

Java Socket 套接字(socket)为两台计算机之间的通信提供了一种机制,在JamesGosling注意到Java语言之前,套接字就早已赫赫有名.该语言只是让您不必了解底层操作系统的细节就能有效地使用套接字. 1客户机/服务器模型 在饭店里,菜单上各种具有异国情调的食品映入你的眼帘,于是你要了一份pizza.几分钟后,你用力咀嚼浇着融化的乳酪和其他你喜欢的配料的热pizza.你不知道,也不想知道:侍者从那里弄来了pizza,在制作过程中加进了什么,以及配料是如何获得的. 上例中包含的实

java socket多线程的时间问题

问题描述 java socket多线程的时间问题 各位大神你们好, 我正在用java写一个接收服务器数据并进行统计的程序, 我用的是多线程socket. 该程序要求能够每秒钟接收几千条数据, 数据中包含value和timestamp以及其他字段. 每个数据通过单独的连接发送, 接收之后统计每秒的钟数据的最大值与平均值(指的是数据中所含有的"value"字段的值), 并将其存储到本地. 但是使用多线程时我有个疑问, 就是怎么判断是否到了1秒. 如果使用本地时钟计算肯定会与服务器有出入,

Java Socket聊天室编程(一)之利用socket实现聊天之消息推送_java

相关阅读:Java Socket聊天室编程(二)之利用socket实现单聊聊天室 网上已经有很多利用socket实现聊天的例子了,但是我看过很多,多多少有一些问题存在. 这里我将实现一个比较完整的聊天例子,并解释其中的逻辑. 由于socket这一块比较大,所以我将分出几篇来写一个比较完整的socket例子. 这里我们先来实现一个最简单的,服务器与客户端通讯,实现消息推送的功能. 目的:服务器与客户端建立连接,客户端可以向服务器发送消息,服务器可以向客户端推送消息. 1,使用java建立socke