Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我要把插座换成什么?_Java_Sockets_Web_Client - Fatal编程技术网

Java 我要把插座换成什么?

Java 我要把插座换成什么?,java,sockets,web,client,Java,Sockets,Web,Client,阿里创建了一个简单的基于文本的RPG,经过大量的工作,终于将它放到了一个网站上(www.worldofdrakon.com)。我刚刚创建了一个服务器和客户机,但是用户从他们的计算机访问服务器时遇到了问题。我已将插座设置为: Socket socket = new Socket("localhost", 8800); 现在我已经测试了将本地主机更改为我的IP,但没有结果。我收到的错误是连接超时,连接被拒绝。有人能给我指出正确的方向吗?我很抱歉,如果我的问题似乎含糊不清,更多的代码可以提供。有很多

阿里创建了一个简单的基于文本的RPG,经过大量的工作,终于将它放到了一个网站上(www.worldofdrakon.com)。我刚刚创建了一个服务器和客户机,但是用户从他们的计算机访问服务器时遇到了问题。我已将插座设置为:

Socket socket = new Socket("localhost", 8800);
现在我已经测试了将本地主机更改为我的IP,但没有结果。我收到的错误是连接超时,连接被拒绝。有人能给我指出正确的方向吗?我很抱歉,如果我的问题似乎含糊不清,更多的代码可以提供。有很多,所以我不想轰炸你:)谢谢。 服务器端:

public Server() {
        setLayout(new BorderLayout());
        add(new JScrollPane(jta), BorderLayout.CENTER);

        setTitle("Multi-Thread Server");
        setSize(500, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);

        try {
            ServerSocket serverSocket = new ServerSocket(8800);
            jta.append("MultiThreadServer started at " + new Date() + '\n');

            int clientNo = 1;

            while(true) {
                Socket socket = serverSocket.accept();
                jta.append("Server Thread for client " + clientNo + " at " + new Date() + '\n');

                InetAddress inetAdress = socket.getInetAddress();
                jta.append("Client " + clientNo + "'s host name is " + inetAdress.getHostName() + "\n");
                jta.append("Client " + clientNo + "'s IP Address is " + inetAdress.getHostAddress() + "\n");

                HandleAClient task = new HandleAClient(socket);

                new Thread(task).start();

                clientNo++;
            }
        } catch(IOException ex) {
            System.err.println(ex);
        }
客户端:

try {
            Socket socket = new Socket("localhost", 8800);

            fromServer = new DataInputStream(socket.getInputStream());
            toServer = new DataOutputStream(socket.getOutputStream());
        } catch (IOException ex) {
            jta_TextArea.setText(ex.toString() + '\n');
        }

您的套接字绑定到
localhost
,这意味着中只能为本地客户端提供服务。如果您想让其他人看到您的服务器,第一步是绑定到其他人可见的IP地址

我想你应该使用一个而不是普通的插座

“localhost”正是如此;它是您的本地主机或计算机。如果您试图将套接字连接到其他主机(如解析为www.worldofdrakon.com的主机),则需要在其中获取该主机名或其IP地址

Socket socket = new Socket("worldofthedrakon.com", 8800);

然后你就可以解决防火墙问题了。拒绝连接通常表示有一两个防火墙挡住了去路。您知道新主机上的8800端口已打开吗?

您的服务器使用的是什么?服务器插座?或Web服务器?提供与网络连接相关的代码,包括服务器端代码和客户端代码。@Benjamin BragaServerSocket,提供的代码@BloodwolfSocket=new socket(“lockhost”,8800);字符串“lockhost”是无效的主机名。请改用“localhost”,否则这只是一个笔误。@Benjamin BragaOh snap,没有锁定主机应该是本地主机,我在插入此页面时从我的IP更改了它。最初不是lockhost haha@bloodwolf在客户端,我相信服务器套接字在服务器中。我也这么想,但如果他使用的是服务器套接字,可能不是这样。如果他使用ServerSocket,他可能使用了ctor并绑定到一个端口,这样就不会有这个问题。是的,我正在使用ServerSocket,你知道我需要从这里走到哪里吗?我正试图在我上面构建的服务器上存储用户信息,但我创建的只是一种保存信息的方法。任何其他计算机都会被拒绝。我如何设置它,以便将用户变量发送到服务器,并根据请求从服务器加载?我在上面的轨道上对吗?还是我问错了Java的问题?我在这个游戏上投入了太多的时间和精力,我希望我能了解下一步需要做什么。你走上了正确的轨道,尽管我认为如果你阅读更多关于客户机/服务器编程和套接字的内容,你会受益匪浅。此外,您可能希望使用Web服务器和RESTAPI来完成所有这些。那可能是最好的方式。谢谢你,阿里,我刚买了一本关于网络的巨著,但现在我有一些东西可以做研究,我会马上去做的,谢谢!感谢您的快速响应,在两台计算机上测试防火墙时,我尝试暂时关闭防火墙,但均无效。它所在的网站是由一家公司托管的,所以我假设我不能使用该主机名?没有办法让我的客户端连接到我计算机上的服务器吗@Bob KuharTo就我所知(我缺乏网络专业知识),如果您的两台机器都在同一个网络上(来自同一DHCP服务器的IP地址),那么您应该能够仅使用运行服务器的机器的IP地址来实现这一点。例如,在我的家庭网络上,我的机器是10.0.1.7,我妻子的机器是10.0.1.4。如果ServerSocket正在我妻子的机器上侦听,我将构造客户端套接字(“10.0.1.4”,8800)。我不知道我网络之外的人如何通过IP地址或其他方式连接到她的机器(我想这就是DNS的作用)。当你说机器的IP地址是指内部还是外部时,我猜是外部的,对吗?嗯,我想我会去巴恩斯和诺贝尔,看看他们有没有这方面的书。我明白我现在所要求的和我所做的是两件不同的事情。但不幸的是,我读过的3本java巨著中没有一本涉及从其他计算机向服务器写入内容。真可惜。再次感谢您的回复:)