java不同网段
❶ kemulator模拟器玩手机游戏跳出来java.NET.SOCKETEXCEPTION:connection reset
你好,a。可能原因分析:
1,网络编程时未正确捕获java.net.SocketException,客户端先关闭就会报这个异常;
2,数据库和应用服务器的网段不同.
b。好像说防火墙的比较多。。。。
大部分是网络的原因。提交post的东西多,然后服务器接收就超时了。。。
c。如果weblogic server和数据库服务器不在同一台主机,会经常有这种情况,我也遇到过,不过好像的确不怎么影响使用
d。从根本上说是weblogic sp2的bug
e。一般是有些客户端已关闭,一些线程因为延迟等原因觉察不到此连接已结束,继续等到到出错或是 客户端那里不停刷或一个访问/刷新没完成前再刷,要让这个无用的线程死掉和这个错误如果不影响应用运行的话大可不必理会。有一种抛出这个异常的情况是:
浏览器请求了一个服务器端资源,在响应回来之前转而请求其他的资源。这个时候最初的浏览器跟服务器的连接中断,服务器的peer程序就会reset那个connection。
腾讯电脑管家企业平台:http://..com/c/guanjia/
❷ 如何用JAVA实现同网段内从另外一台电脑读取文件
那个人的回答也可以,
不过最简单的方式就是局域网共享,如果你的电脑能访问对方的文件
那么就和读本地文件没有什么区别了.唯一不同的就是新建输入流的时候,文件路径传网络访问路径 如:\\192.168.1.2\share\a.rar 不过你要修改成转义符:
\\\\192.168.1.2\\share\\a.rar
还有一种就是映射网络驱动器,把要访问的电脑磁盘映射成一个本地的磁盘,
那么就访问本地就是了!!!!!socket 感觉用在这里有点牛头不对马嘴,而且还要编写一个服务端.复杂化了.
❸ 我打开网页 每个网页说需要java 导致许多东西打不开 有没有什么办法解决
不能浏览网页的原因和解决办法
最近发现很多网友问无法浏览网页之类的问题,确实太多人问了,为了解决各位的疑惑,本人便收集一些资料并和各位探讨下如何排除这个故障。(倒杯茶先)当然偶只是和大家一起分析一下比较常见的故障,具体情况还需具体分析,各位可以参考一下几种情况做相应的措施,希望能给各位带来帮助。若各位觉得好的话记得帮偶顶一下,不要让这篇帖子沉了,好让更多人看到。
情况一:上网无法浏览网页却能用QQ聊天。
1、浏览器“连接”选项设置错误
解决办法:正确设置上网类型。如果是通过代理服务上网的,请正确填写代理服务器的IP地址与端口号;如果不是,请不要勾选“通过代理服务器”这个选项。
2、DNS服务器设置错误
解决办法:如果ISP提供商分配给你的是固定的IP地址,那么请正确填写ISP提供的IP地址与DNS服务器地址;如果ISP提供商分配的是动态的IP地址,那么无须填写DNS服务器地址;还有一个可能是ISP提供商的DNS服务器出错不能正确地进行域名→IP地址之间的转换,这个时候你可以在浏览器的地址栏敲入网站的IP地址,即可浏览网页。
3、防火墙设置错误
解决办法:如果防火墙设置不当,那么可能阻隔与外网进行信息交换,造成无法浏览网页的故障。我们可以修改防火墙设置。什么,怎么修改?这就不用俺说了吧。嗯,还是说一下,对于不了解的朋友直接选默认级别,选“中”就可以了。
情况二:ADSL能成功登陆但无法浏览网页的故障解决办法
首先应该PING ISP的DNS服务器地址,看看能否PING通,如果能PING通,多数是软件问题居多,如果不能PING通,则应该检查硬件设备/线路连接状况和通讯协议(TCP/IP)
如果能PING通,可以看到类似以下的信息:
命令ING 202.98.160.68
Reply from 202.98.160.68: bytes=32 time=14ms TTL=250
Reply from 202.98.160.68: bytes=32 time=27ms TTL=250
Reply from 202.98.160.68: bytes=32 time=20ms TTL=250
Reply from 202.98.160.68: bytes=32 time=17ms TTL=250
如果不能PING通,会有以下信息:
Pinging 202.98.160.68 with 32 bytes of data:
time out
time out
time out
time out
1.有多台电脑的朋友,可以用别的电脑替换,替换的电脑不要装任何代理服务器软件,也不要装任何防火墙,并且只装一个网卡直接和ADSLMODEM相连,正确装上ADSL拨号软件后。看是否能正常浏览,如果能,故障就是用户端的电脑引起,如果不行,就需要检测MODEM和线路是否正常。
2.只有一台电脑的朋友,可以先停止运行所有代理服务器软件,例如WINGATE 、SYGATE、WINDOWS的INTERNET连接共享(ICS)等等,直接登陆看看故障能否排除,如果停止运行代理服务器软件后故障排除,那可以肯定是代理服务软件的问题。
3.检查浏览器特别是IE的设置,例如最常见的引发不能浏览网页的故障是在IE中选取了“自动检测设置”,记住这个选项千万不要选取。如果是IE5X版本,单击工具-》INTRENET选项-》连接-》局域网设置,就可以看到该选项,如果该选项前面打了勾,一定要取消。取消后故障就可以解决。
4.检查TCP/IP协议的属性设置,特别是DNS服务器设置是否正确,昆明的ADSL用户可以将主控DNS服务器设置为:202.98.160.68,辅助DNS可以设置为:202.98.161.68 , 特别要说明的是,拨号软件不同,设置DNS的位置也不一样,有些(在拨号网络的连接图标的属性中设置,有些在控制面板网络中设置,有些在拨号软件(例如ENTERNET300)自带的连接Profile属性中设置。这3个地方都要务必设置正确。
5.用WINDOWS的朋友,如果经过上述检查都确认正确无误,可以准备好ADSL拨号软件和WINDOWS系统光盘,然后先删除拨号软件,再删除控制面板/网络中的所有TCP/IP协议,重启电脑后再重新添加TCP/IP协议,并打开MODEM电源,重新安装拨号软件,经过测试,如果设置正确无误,重装拨号软件和TCP/IP后大都可以解决拨号能拨通但无法浏览网页的问题。
6.更换一个浏览器软件例如网景公司的NETSCAPE浏览器浏览测试。
7.如果你直接连接ADSL MODEM上网的那台电脑装了两个网卡,试试把连接局域网络的网卡先拿起,只留下连接ADSL MODEM的网卡。然后看看故障是否排除,如果故障排除,就应该检查网络和系统资源配置。特别是看看网卡和其他设备有没有冲突(WINDOWS用户可以在控制面板/系统/设备管理中查看设备是否正常)
8.你的网卡启用了BOOT ROM芯片的引导功能,而且网卡带有PXE的引导芯片之后所造成的。可以这样解决:
①如果网卡是集成在主板上的,或者将网上的启动程序写进了BIOS中,可以从BIOS设置中修改系统的引导顺序,如设置硬盘最先引导,或者从BIOS中禁止网卡启动系统。
②如果网卡不是集成的,则可以拔掉网卡上的引导芯片或者用网卡设置程序,禁止网卡的BootROM引导功能也可以关机,然后在开机之后,当出现“Press Shift-F10 Configure……”时,马上按“Shift+F10”组合键,进入菜单之后,从第4行中将Boot order rom设置为disable,然后按F4键保存退出。
情况三:共享上网无法浏览网页
用Windows XP系统的机器做代理服务器后发现局域网中的其他电脑无法浏览网页,但是有数据流,还可以使用QQ等软件,网络中的各个机器也可以互访。代理服务器为双网卡,在网络配置向导中设置为“网络中的其他计算机通过本机上网”(通过a网卡接局域网),在共享属性中设置为“共享到网络中的b连接”(即第2张,为b网卡)。客户机设置为“通过网络中的其他电脑上网”,操作系统有Windows 98/2000/XP,通过交换机连接。代理服务器接交换机的了个指示灯工作正常(a、b网卡和宽带Modem连接),但客户机上的指示灯只是偶尔亮一下。在打开网页时,可以在状态栏看到“正在打开*****网页”但很长时间都看不到网页,最后显示“网页无法显示”的提示。
解决措施:可能是你的网线连接和DNS设置存在问题:
①做一条级联线,将a网卡直接连接到宽带ADSL上,其他不动。
②设置其他客户机的IP地址为192.168.0.2、192.168.0.3、192.168.0.4……,子网掩码设置为255.255.255.0,设置每台客户机的网关地址为192.168.0.1,设置DNS为你的ISP的DNS地址。
同时,也可以考虑一下代理服务器、网卡之间是否存在着冲突,调换一下PCI插槽、移除暂时不需要的外设等也对问题的解决有一定帮助。
常见的ADSL断流现象
网页打不开、下载中断、或者在线视、音频流中断,这些情况都是很多使用ADSL上网的人会遇到的麻烦。可是当仔细检查ADSL MODEM的状态时,又会发现拨号登录已经成功。那么问题究竟出在哪里?
1.线路不稳定
如果住所离电信局太远(5公里以上)可以向电信部门申报。确保线路连接正确(不同的话音分离器的连接方法有所不同,请务必按照说明书指引正确连接)。同时确保线路通讯质量良好没有被干扰,没有连接其它会造成线路干扰的设备,例如电话分机,传真机等。并检查接线盒和水晶头有没有接触不良以及是否与其它电线串绕在一起。有条件最好用标准电话线,如果是符ITU国际电信联盟标准的三类、五类或超五类双绞线更好。电话线入户后就分开走。一线走电话、一线走电脑。如果居住的房间都希望安装电话分机,最好选用质量好的分线盒。PC接ADSL Modem附带的双绞线。(注意:手机一定不要放在ADSL Modem的旁边,因为每隔几分钟手机会自动查找网络,这时强大的电磁波干扰足以造成ADSL Modem断流。)
2.检查您的网卡,如果是ISA网卡最好能换成PCI的,并且选择质量好的网卡,太便宜的网卡可能是造成问题的罪魁祸首。10M或10M/100M自适应网卡都可。另外,双网卡引起冲突同样值得关注,这时,应当拔起连接局域网或其它电脑的网卡,只用连接ADSL的网卡上网测试,如果故障恢复正常,检查两块网卡有没有冲突 。
3.ADSL Modem或者网卡设置有误
最常见的是设置错了ADSL Modem的IP地址,或是错误设置了DNS服务器。因为对于ADSL虚拟拨号的用户来说,是不需要设定IP地址的,自动分配即可。TCP/IP网关一般也不需要设置。另外如果设定DNS一定要设置正确,如果操作系统是Windows 9x,在DOS窗口下键入Winipcfg获取DNS地址,在Windows 2000/XP下键入ipconfig /renew,或询问当地电信部门。
另外,TCP/IP设置最容易引起不能浏览网页的情况,例如没有更改过设置,一直可以正常浏览,突然发现浏览不正常了,就可以试着删除TCP/IP协议后重新添加TCP/IP 协议。
4.ADSL Modem同步异常
检查一下自己的电话线和ADSL连接的地方是否接触不良,或者是电话线出现了问题。如果怀疑分离器坏或ADSL Modem坏,尝试不使用分离器而直接将外线接入ADSL Modem。如果确定是分离器没有问题,要保证分离器与ADSL Modem的连线不应该过长,太长的话同步很困难。如果排除上述情况,只要重起ADSL Modem就可以解决同步问题。
5.拨号软件互扰
ADSL接入Internet的方式有虚拟拨号和专线接入两种,现在个人用户的ADSL大都是采用前者。而PPPOE(Point-to-Point Protocol over Ethernet以太网上的点对点协议)虚拟拨号软件都有各自的优缺点。经过多方在不同操作系统的测试,如果使用的操作系统是Windows XP,推荐用它自带PPPOE拨号软件,断流现象较少,稳定性也相对提高。如果使用的是Windows ME或9x,可以用以下几种虚拟拨号软件——EnterNet、WinPoET、RsapPPoE。其中,EnterNet是现在比较常用的一款,EnterNet 300适用于Windows 9x;EnterNet 500适用于Windows 2000/XP。当你用一个PPPOE拨号软件有问题时,不妨卸载这个软件后换用一个其它的PPPOE拨号软件,请务必注意不要同时装多个PPPOE软件,以免造成冲突。
6.其他软件冲突
卸载有可能引起断流的软件,现在发现某些软件例如QQ 2000b等,偶然会造成上网断流,具体什么条件下会引发,尚要进一步测试。不少网友卸载后就发现断流问题解决了,包括用普通Modem 163拨号上网的用户也有用这种方法解决了断流问题的情况,笔者也收到朋友的邮件反映卸载QQ后断流问题解决,所以如果你有QQ,不妨先卸载你的OICQ,然后再上网试试。当你发现打开某些软件就有断流现象,关闭该软件就一切正常时,卸载该软件试试。
7.病毒攻击和防火墙软件设置不当
虽然受到黑客和病毒的攻击可能性较小,但也不排除可能性。病毒如果破坏了ADSL相关组件也会有发生断流现象。建议安装“天网防火墙”或者“金山网镖”网络防火墙,它们都可以实时监控你的计算机和网络的通讯情况,并警告提示莫名的网络访问方式,有效降低受攻击的危险性。如果能确定受到病毒的破坏和攻击,还发生断流现象时就应该检查安装的防火墙、共享上网的代理服务器软件、上网加速软件等,停止运行这类软件后,再上网测试,看速度是否恢复正常。
到了总结的时候了,无法浏览网页是上网最常见的故障之一,其具体原因比较复杂,解决的方法也不尽相同。我们可以这样:先软再硬后系统,先简单后复杂,折半查找缩小故障范围。具体有以下几个主要步骤:
第一步:排除偶然的、不可预见性故障
不管三七二十一,先冷启动电脑及调制解调器,排除可能存在的偶发性、不可预见性故障,例如软件冲突、内存混乱、ADSL Modem自动断线、IP调整中的自动断线、设备休眠等问题。仍不行再打听别人或别的电脑能否正常浏览网页,判断是共性问题还是个性问题。如果是共性问题,对因特网就只能由ISP解决,对局域网则要检查服务器或网络线路。如果是个性问题,就可以把视线集中到本网络及本机上来。
第二步:初步确定故障范围
用命令ping检查判断。主要ping以下地址:一是ping 本机循环地址(127.0.0.1),如果显示Reply from 127.0.0.1: bytes= time=?ms TTL=?,则表示TCP/IP协议运行正常,若显示Request timed out(超时),则必须重装该协议。二是ping本机IP地址。使用ipconfig命令(9x系统应该输入winipcfg)查看本机IP地址,若通则表明网络适配器工作正常,否则可能是网卡、Modem有问题。三是ping同网段电脑地址。若不通表明本段网络有问题。若网络中有网关、路由器,则要分别ping其与本网段和其他网段相连端口的IP地址,以确定其是否有故障。四是ping 主、备用DNS服务器和Web服务器地址,若不通则与网管或ISP联系解决。
若上述地址都能ping通,则可确定是操作系统和浏览器的故障。如果其间间断出现超时错误(亦需考虑服务器可能设置为禁止ping的情况),表明网络不稳定,易丢包,例如局域网中有广播风暴就可能产生时断时续,这一般是网络连接、配置错误、或用户过多造成的。
第三步:排除可能存在的“软”问题
一是检查网络配置。检查TCP/IP协议的设置情况、网卡、Modem等设备的参数设置,重点是IP地址、网关、DNS地址是否正确,若有误则恢复到正常时的设置。检查协议、网络适配器是否过多,建议删除“NetBEUI”、“IPX/SPX”等协议(视网络情况定)。若通过代理服务器上网,则检查浏览器中“代理服务器”设置是否正确。检查是否错误设置了拨号适配器的IP地址,由于传统拨号上风的IP地址是自动分配,在电脑配置了网卡时有可能将本该设置在网卡上的固定IP地址错误设置在拨号适配器上,导致无法拨号上网。检查拨号上网相关设置是否符合ISP要求,例如有的地区拨号上网号码、用户名及密码调整了,改为16300,16900等。
二是检查网卡、Modem等设备的驱动程序是否有问题,如果在设备管理器中发现有黄色的!或?,要重新安装配套的驱动程序。
三是检查系统是否感染了病毒。将杀毒软件升级到最新版本后全面杀毒。
第四步:排除可能存在的“硬”问题
一是检查网卡、各种调制解调器等是否工作正常(是否被禁用)。检查是否因过热而出现工作不稳定的情况,例如可通过 Modem指示灯、网卡指示灯观察其是否工作正常(对照说明书等资料观察)。用替换法(换设备或将此设备移到其他电脑上试验)检查是否网卡、Modem品质或者兼容性不好。
二是检查是否为网络接口故障。检查有关板卡(如网卡)是否被禁用。板卡、线路、RJ-11及RJ-45线接头因多次插拔、灰尘太多、老化可能导致虚接、松动,可关机断电后取下用橡皮擦或酒精棉试、重新插拔,或者换个插槽、接口试试,或者重新连接线路并用绝缘胶带隔离加固或更换。例如RJ-45接口经常会出现松动情况,可用压线钳加固。
三是检查外线是否有通畅。如果通过电话上网则检查电话线路是否正常,可将Modem上的电话进线接到电话机上听有无拨号音,或直接拨号测试。从ISP到ADSL滤波器这段连接中任何设备的加入都将危害到数据的正常传输,所以在滤波器之前不要并接电话、电话防盗打器等设备。若用老式Modem上网,电话机不能开启防盗打功能。检查ADSL Modem 分频器是否连接正确,即电话进线接分频器Line口,电话或传真机接Phone口,宽带调制解调器电话线接ADSL口。
四是检查电压是否稳定,环境温度是否过高(过低)以及网络线路是否繁忙。
第五步:排除浏览器故障
修复浏览器。将浏览器所有设置恢复到默认值后再试,排除设置因素。修复浏览器,可以通过“添加删除程序”(对IE6)、升级,或用上网助手在线修复。还可以安装其它的浏览器试试。
第六步:排除操作系统故障
一是修复注册表。由于访问恶意网站可能导致计算机注册表被更改,不能上网。通过注册表修复器、上网助手等工具或scanreg /restore命令修复注册表。
二是关掉其它已经运行的部分可能造成冲突的内存驻留程序(或进程)、关闭或禁用其他设备(例如其他的网卡、Modem、共享资源的相关设备等),再尝试是否能上网。
三是检查操作系统文件是否被破坏。用Windows系统文件检查器检查(win98的用sfc,win2000以上的用sfc/scannow),如果提示被破坏则恢复。
四是重装操作系统。从保护数据的角度出发,建议先覆盖安装,如果仍没有解决问题则在准备好驱动程序安装盘、备份好重要资料备份(最好先将系统分区Ghost)的前提下,格式化安装操作系统。
不介意俺再来个小总结吧。再做个小总结吧,DNS服务器设置错误,TCP/IP协议出错,这是最常见的错误。你需要首先检查拨号网络中的主控DNS和辅助DNS是否有错误,注意这里是检查“拨号网络”的DNS而非“控制面板”中的“网络”的DNS。DNS地址请询问你的当地ISP,你在哪报装的宽带就去那问呗。现在通讯那么发达,一个电话就可以了。什么,你不知道他们电话?俺也不知道,在俺村里不管有什么问题,打110就可以了,还是免费的。你们也可以试下。怎么设DNS就不用问俺了吧,麻烦会的朋友告诉不会的朋友,俺代表党和国家向你敬礼了。
下面再说说由于TCP/IP协议出问题引起的故障,如果你检查过以上设置后发现设置没有错误,但仍然无法浏览网页,那么你就要检查“TCP/IP”协议是否出错了,在桌面上双击“我的电脑”图标, 再双击“控制面板”,在控制面板中找到“网络”图标,双击它 将弹出一个新的窗口,在弹出的窗口中看看“已安装了下列网络组件”中是否安装了以下几项:
×拨号网络适配器
×TCP/IP
这里要特别注意两点:第一,如果这里重复安装了两次拨号网络适配器或TCP/IP,就造成无法浏览网页,怎么看出是重复安装了呢?假如重复安装了拨号网络适配器,你会看到有一行写着“拨号网络适配器#2”或“TCP/IP->拨号网络适配器#2”,这里多了一个“#2",代表你安装了两次,如果发现有这样#2的一行,请务必删除此行。第二,如果这里没有重复安装,但又肯定拨号网络中的配置无误,那么极有可能就是TCP/IP协议出错造成无法浏览网页,解决办法是删除此协议重新安装TCP/IP(注意做此步前请先确定你有windows9x的安装光盘,因为重装时系统需要从此光盘中读取数据),具体方法是:用鼠标左键单击“拨号网络适配器”,再留意此窗口有三个按钮,分别是“添加”、“删除”和“属性”,单击“删除”,这时你会发现“拨号网络适配器”已经被删除,再检查“TCP/IP”,通常如果你没有装其它网卡,删除了拨号网络适配器后TCP/IP也会跟着删除,如果你安装了其它网卡,那么请你用鼠标左键单击含有TCP/IP的行,然后将他们一一删除。单击“确定”。系统会询问你是否重新启动电脑,单击“是”。重启电脑后,再进入“控制面板”,双击“网络”,回到刚才的窗口,然后单击“添加”按钮,一个新的窗口将出现,在此窗口选择“适配器”,再单击“添加”,会出现最后一个新的窗口。此窗口的左边方框是“厂商”,这里选择“Microsoft”,在右边方框中选择“拨号适配器”,单击确定,你会发现现在回到了控制面板中的“网络属性”窗口,而且“已安装了下列网络组件”中已经重新增加了“拨号网络适配器”和“TCP/IP”协议。单击“确定”系统可能会要求你放入Windows9X的安装光盘,读取数据后会问你是否重新启动电脑,单击“是”,重启电脑后拨号上网,通常到此不能浏览网页的故障都会排除。
提示:以上一段话中有一点请务必注意,有部分朋友反映重装“TCP/IP”后仍然不能浏览网页,经我们测试发现,原因是有些朋友在删除了“TCP/IP"后没有重启电脑就立即在窗口中重新添加“TCP/IP”,最后重启电脑,这样做是徒劳无功的。请记住务必在删除“TCP/IP”后重启电脑,然后再添加“TCP/IP”,添加后再一次重启电脑,这样总共重启了两次电脑而非只重启一次,只有如此才能解决故障。
❹ 用JAVA编写网络消息收发软件
import java.io.*;
import java.net.*;
import java.util.*;
public class ChatServer {
boolean started = false;
ServerSocket ss = null;
List<Client> clients = new ArrayList<Client>();
public static void main(String[] args) {
new ChatServer().start();
}
public void start() {
try {
ss = new ServerSocket(8888);
started = true;
} catch (BindException e) {
System.out.println("端口使用中....");
System.out.println("请关掉相关程序并重新运行服务器!");
System.exit(0);
} catch (IOException e) {
e.printStackTrace();
}
try {
while(started) {
Socket s = ss.accept();
Client c = new Client(s);
System.out.println("a client connected!");
new Thread(c).start();
clients.add(c);
//dis.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
ss.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class Client implements Runnable {
private Socket s;
private DataInputStream dis = null;
private DataOutputStream dos = null;
private boolean bConnected = false;
public Client(Socket s) {
this.s = s;
try {
dis = new DataInputStream(s.getInputStream());
dos = new DataOutputStream(s.getOutputStream());
bConnected = true;
} catch (IOException e) {
e.printStackTrace();
}
}
public void send(String str) {
try {
dos.writeUTF(str);
} catch (IOException e) {
clients.remove(this);
System.out.println("对方退出了!我从List里面去掉了!");
//e.printStackTrace();
}
}
public void run() {
try {
while(bConnected) {
String str = dis.readUTF();
System.out.println(str);
for(int i=0; i<clients.size(); i++) {
Client c = clients.get(i);
c.send(str);
//System.out.println(" a string send !");
}
/*
for(Iterator<Client> it = clients.iterator(); it.hasNext(); ) {
Client c = it.next();
c.send(str);
}
*/
/*
Iterator<Client> it = clients.iterator();
while(it.hasNext()) {
Client c = it.next();
c.send(str);
}
*/
}
} catch (EOFException e) {
System.out.println("Client closed!");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(dis != null) dis.close();
if(dos != null) dos.close();
if(s != null) {
s.close();
//s = null;
}
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
}
//ChatClient.java文件
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class ChatClient extends Frame {
Socket s = null;
DataOutputStream dos = null;
DataInputStream dis = null;
private boolean bConnected = false;
TextField tfTxt = new TextField();
TextArea taContent = new TextArea();
Thread tRecv = new Thread(new RecvThread());
public static void main(String[] args) {
new ChatClient().launchFrame();
}
public void launchFrame() {
setLocation(400, 300);
this.setSize(300, 300);
add(tfTxt, BorderLayout.SOUTH);
add(taContent, BorderLayout.NORTH);
pack();
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent arg0) {
disconnect();
System.exit(0);
}
});
tfTxt.addActionListener(new TFListener());
setVisible(true);
connect();
tRecv.start();
}
public void connect() {
try {
s = new Socket("127.0.0.1", 8888);
dos = new DataOutputStream(s.getOutputStream());
dis = new DataInputStream(s.getInputStream());
System.out.println("connected!");
bConnected = true;
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void disconnect() {
try {
dos.close();
dis.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
/*
try {
bConnected = false;
tRecv.join();
} catch(InterruptedException e) {
e.printStackTrace();
} finally {
try {
dos.close();
dis.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
*/
}
private class TFListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String str = tfTxt.getText().trim();
//taContent.setText(str);
tfTxt.setText("");
try {
//System.out.println(s);
dos.writeUTF(str);
dos.flush();
//dos.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
private class RecvThread implements Runnable {
public void run() {
try {
while(bConnected) {
String str = dis.readUTF();
//System.out.println(str);
taContent.setText(taContent.getText() + str + '\n');
}
} catch (SocketException e) {
System.out.println("退出了,bye!");
} catch (EOFException e) {
System.out.println("推出了,bye - bye!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
❺ 请问如何跨网段实现网络唤醒
下面的分析可以参考,跨网唤醒需要在路由上进行设置:
远程唤醒:
1、除了在BIOS中开启远程唤醒功能外,有些主板要求开启以下功能:
AC Back Function(设置掉电重启后系统的状态)
主板的来电唤醒功能 比如一插电源线主机就启动看你想怎么设置了 使用远程唤醒将“AC BACK Function”设置为“Full-on”即可 关机,开机,先前的状态(原来开时后来电就马上开机,原来关机后来电时还保持关机状态)
2、另外,有些网卡还要在其属性中进行另外设置:
系统重新启动后,单击[开始]-][控制面板],然后选择[系统]。
在“系统属性”窗口中,选择[硬件] 标签,然后单击[设备管理器]。
在“设备管理器”窗口中,单击[网络适配器] 旁边的加号+,然后双击[marvell yukon 88e8036/8053 pci-e fast ethernet controller]。
选择[高级] 标签,然后选择[wake from shut down] 属性。
在“值”列表中选择[开],然后单击[确定] 以关闭对话框。
跨网段远程唤醒:
由
于跨网段要经过交换机或路由器,而它们是不允许广播的,所有些网友回答用 ip help address 原理么类似跨网段的DHCP,或者IP
DIRECTED BROADCAST 和 IP FORWARD PROTOCOL 需要ENABLE等。可是使用后发现还是不行,后来见到一文章:
************************************************************
远程开机,现在有两种方法,本地同一广播域内开机,远程过路由开机。
先谈谈本地开机。
要打开mac地址是00-0E-7F-7B-BD-32这台主机,发起pc发出一个广播。通过sniffer的ip包。可以看到目的MAC地址是FF-
FF-FF-FF-FF-FF,这是一个广播,再看目的ip地址,192.168.200.255,是ip广播,向下看,数据包是UDP,目的端口是
2304,源端口不必理会。
那么说,发一个广播,只要端口是2304就可以开机吗?显然不是,开机是有针对性的,不是发一个这样的广播,所有的机器都开机。关键就在那个数据里面。
看一下这个126字节的数据到底有什么,最初的6个子字节是全F,7到12字节就是要开机的MAC地址,然后循环出现,直到填充到126个字节为止。这才
是确定开那一台机器的关键。
总结一下,要开机就必须让被开的机器,收到端口为2304的udp数据包,包的内容包含了被开机的MAC地址。但是没有开机的机器没有办法设定ip地址,怎么才能让其收到,于是广播就是最好的方式了。
那么远程过路由开机怎么办,又不能进行广播。
通过抓包可以发现,目的mac地址变成了网关的,目的ip地址变成了那台机器设定的静态ip,其它数据没有变化。那么这样可以开机吗?前面不是说过了,没有开机的机器是无法设定ip的,它如何才能把这个数据送到该网卡呢。
这里就牵扯到一些路由器,交换机,hub的一些原理。hub是把所有的数据都发送到所有端口(物理),所以效率不高;交换机呢,是根据已经注册的mac
地址和端口(物理)的对应关系转发,那么没有开机的情况下,当然也没有注册mac地址了,但是交换机在对待没有注册的mac地址的时候,会把这个数据包发
往所有的端口(物理),这样也没问题了。那么作为远程的关键导入点的路由器,是工作在3层,它要查找ip地址和mac的对应关系,就用arp协议,我们知
道如果这台机器是down状态下,是不会应答arp广播的,那么这样说来无法开机了?结果却出人意料,机器却开机了,为什么?
分
析一下,进入路由器,察看arp
table,竟然有ip地址和mac的对应,稍作思考就明白,原来这台测试用的电脑刚刚做完开机测试,刚关机,开机的时候,即使我们什么都不
做,windows机器也会去找微软的服务器的,这已经不是秘密,那么它必然找过网关,所以网关当然就知道了这个ip和mac的对应关系,根本就不用
arp查找,直接就发出数据,机器接收到也就能开机了。为了证实这个想法,把路由器内的对应关系删除,果然不能开机了。
远程开机不能只开刚刚关闭的机器吧,症结就在ip和mac的关系上,那么绑定对应关系,问题迎刃而解。
************************************************************
于是在交换机中加入IP与MAC地址的绑定命令:arp 192.168.1.2 0011.e4e5.2489 arpa
然后用AMD的开机软件测试,在IP地址中输入192.168.1.2,在MAC地址中输入0011.e4e5.2489 ,OK成功。
❻ 怎样用Java实现网桥自学习算法
网桥的自学习算法原理
珞辰
网桥:在数据链路层可以用网桥设备来扩展以太网。网桥工作在数据链路层,它根据MAC 帧的目的地址对收到的帧进行存储转发和过滤。当网桥收到一个数据帧时,并不是向所有的接口转发这个数据帧,而是会进行有条件的转发(网桥会丢弃CRC检验有差错的帧以及帧长过短和过长的无效帧)再根据此帧的目的MAC地址,然后查找转发表(网桥会自己维护转发表,转发表中每一条目都记录了到达某个目的MAC地址的数据帧可以从那个接口进行转发)根据转发表中的条目逐步匹配看该从那个接口转发或是否需要丢弃该数据帧。最简单的网桥只有两个接口(这里所讲的网桥都是两个接口的网桥)。
使用网桥设备的优点:
1,过滤通信量,增大吞吐量(网桥可以隔离碰撞域提高网络的吞吐量)
2,扩大了物理网络的范围(扩展以太网)
3,提供了可靠性(只影响单个网段)
4,可以互连不同的物理层,不同MAC子层和不同速率
使用网桥设备的缺点:
1,使用CMSA/CD算法增加了时延
2,不能进行流量控制,缓存存储空间可能会发生溢出
3,会产生广播风暴
网桥自学习和转发帧的一般步骤:
1,网桥收到一帧后先进行自学习。查找转发表中与收到数据帧的源地址有无匹配的项目。如果没有,就在转发表中增加一个项目(记录数据帧的源地址,进入网桥的接口和时间)。如果有,则把原来的项目进行更新。
2,转发帧。查找转发表中与收到数据帧的目的地址有无相匹配的项目。如果没有,则通过其他的接口(但进入网桥的接口除外)进行转发。如果有,则按转发表中给出的接口进行转发。但应当注意,若转发表中给出的接口就是该帧进入网桥的接口,则应该丢弃这个数据帧(因为这种情况不需要经过网桥进行转发)。
3,使用生成树算法,即互连载一起的网桥在进行彼此通信后,就能找出原来的网络拓扑的一个子集。在这个子集里,整个连通的网络中不存在回路,即在任何两个站点之间只有一条路径。
for example: 如图所示,6个站点通过透明网桥B1和B2连接到一个扩展的局域网上。初始时网桥B1和B2的转发表都为空。假设需要传输的帧序列如下:H2传输给H1;H5传输给H4;H3传输给H5;H1传输给H2;H6传输给H5。请给出这些帧传输完后网桥B1和网桥B2的转发表。假设转发表表项的格式为:[ 站点, 端口 ]。
发送的帧B1转发表 B1的处理 B2转发表 B2的处理
H2--->H1 H2,1 登记,转发 H2,1 登记,转发
H5--->H4 H5,2 登记,转发 H5,2 登记,转发
H3--->H5 H3,2 登记,丢弃 H3,1 登记,转发
H1--->H2 H1,1 登记,丢弃
H6--->H5 H6,2 登记,丢弃
解释说明:
1,H2主机向H1主机发送帧。连接在同一个局域网上的主机H1和网桥B1都能收到H2主机发送的数据帧。网桥B1收到这个数据帧后,先按源地址H2查找转发表。这时因为网桥B1的转发表为空,于是就把地址H2和收到此帧的接口1 写入到转发表中。这就表示,以后若收到要发给H2的帧,应当从网桥B1的这个接口1 转发出去。接着再按目的地址H1查找转发表。转发表中没有H1的地址,于是通过除收到此帧的接口1 以外的所有接口转发此帧。网桥B2 从其接口1 收到这个转发过来的帧。网桥B2按同样的方式处理收到的帧。网桥B2的转发表中没有H2的地址,因此在网桥B2的转发表中写入地址H2 和接口1 。网桥B2的转发表中没有H1的地址,因此网桥B2会通过除接收此帧的接口1 以外的所有接口转发这个帧。(H1本来就可以直接收到H2发送的数据帧,为什么还要让网桥B1和B2盲目地转发这个帧呢??? 答案是:这两个网桥当时并不知道网络的拓扑结构,因此要通过自学习过程才能逐步弄清所连接的网络拓扑,建立起自己的转发表)
2,H3主机向H5主机发送数据帧。首先看网桥B1,网桥B1从其接口2收到这个数据帧。网桥B1的转发表中没有H3,因此在B1的转发表中写入地址H3 和接口2。再查找目的地址H5。现在网桥B1的转发表中可以查询到H5,其转发的接口是2,和这个帧进入网桥B1的接口一样。于是网桥B1知道,不用自己转发这个帧,H5也能收到H3发送的帧。于是网桥B1把这个帧丢弃,不再继续转发了。再看网桥B2,网桥B2从其借口1 收到这个帧。网桥B2的转发表中没有H3,因此在B2的转发表中写入地址H3 和接口 1。再查找目的地址H5。现在网桥B2的转发表中可以查询到H5,其转发的接口是 2 ,于是网桥B2直接将这个帧从接口2 转发出去。
3,H6主机向H5主机发送数据帧。首先看网桥B2,网桥B2从其接口2 收到这个数据帧。网桥B2的转发表中没有H6,因此在B2的转发表中写入地址H6 和接口 2。再查找目的地址H5。现在网桥B2的转发表中可以查询到H5,其转发的接口是2,和这个帧进入网桥B2的接口一样。于是网桥B2知道,不用自己转发这个帧,H5也能收到H6发送的帧。于是网桥B2把这个帧丢弃,不再继续转发了。再看网桥B1,其根本不会收到H6主机向H5发送的数据帧,所以不会有任何其他操作。
PS:在网桥的转发表中写入的信息除了地址和接口外,还有帧进入该网桥的时间。网桥中的接口管理软件周期性的扫描转发表中的项目。只要在一定时间以前登记的都要删除。这样就使得网桥中的转发表能反映当前网络的最新拓扑状态。还有一点网桥是一种工作在数据链路层的网络设备,它能对于接收到的数据帧进行有条件的转发并且能隔离冲突域。
❼ java socket如何在不同网段间通信
只要能Ping通的IP没有防火墙干你就可以传递了。
❽ 如何让同一网段客户端访问LVS-NAT主机
今天在继续redis的压力测试时,发现一个“奇怪”的现象,我本机可以访问的通LVS主机,但测试服务器却不行。在请教运维部的同事之后才知道,原来LVS-NAT模式下,客户端是不能和RS在一个网段的( 知识欠缺啊,以前只耍过DR模式)。
但是真的不能么?google一番,发现一个童鞋提过一句话:不是不可以,但是要修改路由表。
这一下就醍醐灌顶了,LVS-NAT模式通常用于衔接不同网段之间的请求,如果客户端与RS主机在同一网段的话,会由于RS主机在响应请求时将响应直接发给client而不经过LVS主机,导致client认为这是个错误而丢弃这个响应,表现出来的就是timeout。而修改RS的路由表,则可以指定它该如何响应。
Java代码
[root@esb ~]# route add -host 10.10.224.191 gw 10.10.224.251
[root@esb ~]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.10.224.191 10.10.224.251 255.255.255.255 UGH 0 0 0 eth0
10.10.224.0 * 255.255.255.0 U 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth1
169.254.0.0 * 255.255.0.0 U 0 0 0 eth1
default 10.10.224.251 0.0.0.0 UG 0 0 0 eth0
191就是客户端,251是VIP,我们指定RS在响应191的请求时,使用LVS主机作为网关,这样就使得即使它们在同一个网段,响应时也必须经过LVS主机。
测试一下,果然成功。