На что мне поменять сокет? - PullRequest
2 голосов
/ 19 января 2012

Я создал простую текстовую RPG, и после долгих усилий удалось разместить ее на сайте (www.worldofthedrakon.com) Я только что создал сервер и клиент, но у меня проблемы с доступом пользователей к серверу со своего компьютера. Моя розетка настроена как:

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

Теперь я протестировал смену локального хоста для своего IP, но безрезультатно. Ошибки, которые я получаю, превышают время ожидания соединения, и соединение отклонено. Может ли кто-нибудь указать мне правильное направление? Я извиняюсь, если моя проблема кажется расплывчатой, можно предоставить больше кода. Theres много из этого, поэтому я не хотел бомбардировать вас :) Спасибо. ServerSide:

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 ]

2 голосов
/ 19 января 2012

Ваш сокет связан с localhost, это означает, что он может обслуживать только локального клиента. Если вы хотите, чтобы другие увидели ваш сервер, первым делом необходимо связать IP-адрес, который виден другим!

1 голос
/ 19 января 2012

Я думаю, вы хотите использовать ServerSocket , а не обычный сокет.

0 голосов
/ 19 января 2012

"localhost" это именно то;это ваш локальный хост или ваша машина.Если вы пытаетесь подключить свой сокет к какому-либо другому хосту (как это происходит с www.worldofthedrakon.com), вам нужно указать это имя хоста или его IP-адрес.

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

Затем вы получитебороться с проблемами брандмауэра.Отказ в соединении обычно указывает на наличие одного или двух межсетевых экранов.Знаете ли вы, что порт 8800 открыт на вашем новом хосте?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...