繁体   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