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主機。
測試一下,果然成功。