簡體   English   中英

如何在Java中設置客戶端/服務器?

[英]How do I set up a client/server in Java?

因此,我已經使用Socket和ServerSocket類編寫了一個程序。 但是,如果服務器和客戶端都在同一台計算機上,並且客戶端連接到本地主機(127.0.0.1),則只能連接到服務器。 即使兩者位於同一台計算機上,也無法使用常規IP地址進行連接:我必須使用127.0.0.1。 如何設置服務器,以便可以從任何計算機連接到服務器?

我正在使用Java網絡上的教程程序( http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html )。

這是來自客戶端的堆棧跟蹤:java.net.ConnectException:連接超時:在java.net處的java.net.DualStackPlainSocketImpl.connect0(本機方法)處連接在java.net處的java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69) java.net上的.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)在java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)在java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)在java.net.PlainSocketImpl.connect(在java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)的PlainSocketImpl.java:157)在java.net.Socket.connect(Socket.java:528)的java.net.Socket.connect(Socket.java:579) )在java.net.Socket。(Socket.java:425)在java.net.Socket。(Socket.java:208)在client.Client.connect(Client.java:38)在client.ClientUI $ 2.mouseClicked( java.awt.AWTEventMulticaster.mouseClicked的ClientUI.java:87)(java.awt.Component.processMouseEvent(Component.java:650)的(AWTEventMulticaster.java:269) 8)在javax.swing.JComponent.processMouseEvent(JComponent.java:3321)在java.awt.Component.processEvent(Component.java:6270)在java.awt.Container.processEvent(Container.java:2229)在java。 java.awt.Container.dispatchEventImpl(Container.java:2287)處的awt.Component.dispatchEventImpl(Component.java:4861)在java.awt.LightweightDispatcher.retargetMouseEvent處的java.awt.Component.dispatchEvent(Component.java:4687) (Container.java:4832)at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4501)at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)at java.awt.Container.dispatchEventImpl(Container.java: 2273)在java.awt.Window.dispatchEventImpl(Window.java:2719)在java.awt.Component.dispatchEvent(Component.java:4687)在java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)在java。 awt.EventQueue.access $ 200(EventQueue.java:103)在java.awt.EventQueue $ 3.run(EventQueue.java:688)在java.awt.EventQueue $ 3.run(EventQueue.java:686)在java.security。 AccessController。 java.security.ProtectionDomain $ 1上的doPrivileged(本機方法)java.security.ProtectionDomain $ 1.doIntersectionPrivilege(ProtectionDomain.java:87)處的java.awt.EventQueue $ 4.run(EventQueue.java) :702),位於java.awt.EventQueue $ 4.run(EventQueue.java:700),位於java.security.AccessController.doPrivileged(Native Method),位於java.security.ProtectionDomain $ 1.doIntersectionPrivilege(ProtectionDomain.java:76)。 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)的awt.EventQueue.dispatchEvent(EventQueue.java:699)java.awt.EventDispatchThread.pumpEventsForHier的java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)的awt.EventQueue.dispatchEvent(EventQueue.java:699) (EventDispatchThread.java:150)在java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)在java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)在java.awt.EventDispatchThread.run(EventDispatchThread.java: 91)Java結果:-1

不幸的是,您既未發送代碼,也未發送堆棧跟蹤信息,因此無法發現問題。

但是,我可以假設您可能被計算機上運行的個人防火牆所阻止。 從一台機器移動到兩台機器時,這是一個典型的問題。 發現以下內容:首先在兩台計算機上都停止防火牆(如果正在運行)。 如果它有助於配置允許客戶端連接到服務器的規則(請在防火牆規則中配置端口和IP,然后配置)。

檢查您的操作系統防火牆以及可能還包括防火牆的防病毒程序。 正如AlexR所建議的,您可以禁用所有防火牆和防病毒軟件,然后如果連接成功,則可以向防火牆添加允許連接所需的規則...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM