我该如何将套接字更改为?

时间:2012-01-19 01:42:58

标签: java sockets web client

alI创建了一个简单的基于文本的RPG,经过大量的工作设法将其放在网站上(www.worldofthedrakon.com)。我刚刚创建了一个服务器和客户端,但是我遇到了用户从他们的计算机访问服务器的问题。我将我的套接字设置为:

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

现在我已经测试过将localhost更改为我的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');
        }

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我认为您希望使用ServerSocket而不是常规套接字。

答案 2 :(得分:0)

“localhost”就是这样;它是您的本地主机或您的机器。如果您尝试将套接字连接到其他主机(例如,解析为www.worldofthedrakon.com),则需要获取该主机名或其IP地址。

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

然后你就可以解决防火墙问题了。连接拒绝通常表示存在防火墙或两个防火墙。您知道新主机上的端口8800是否已打开?