Java - не удается подключиться к ServerSocket - PullRequest
1 голос
/ 29 января 2012

Я пытаюсь использовать ServerSocket с портом 2649, и другие люди не могут подключиться.Работает нормально с localhost.Это ошибка, которую получают люди при попытке подключения:

Exception in thread "main" java.net.ConnectException: Connection timed out: connect
 at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method)
 at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
 at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
 at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
 at java.net.PlainSocketImpl.connect(Unknown Source)
 at java.net.SocksSocketImpl.connect(Unknown Source)
 at java.net.Socket.connect(Unknown Source)
 at java.net.Socket.connect(Unknown Source)
 at java.net.Socket.<init>(Unknown Source)
 at java.net.Socket.<init>(Unknown Source)
 at Client.main(Client.java:11)

У меня перенаправлен порт, и на моем компьютере не активирован брандмауэр.Вот настройки, которые я использовал при переадресации портов.

http://i.imgur.com/NLdaA.png

http://i.imgur.com/FJpJQ.png

Когда я проверяю порт 2649 на canyouseeme.org, он говорит, что время соединения истекло.

Я тоже использую Windows XP.Любая помощь приветствуется.

Спасибо

РЕДАКТИРОВАТЬ: Вот код, который я использую

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

    public static void main(String[] args)throws Exception {
        System.out.println("Starting...");
        File file = new File("C:/Testing.txt");
        InputStream in = new FileInputStream(file);
        ServerSocket server = new ServerSocket(2649);
        System.out.println("Ready for connection");
        Socket socket = server.accept();
        OutputStream output = socket.getOutputStream();
        ObjectOutputStream out = new ObjectOutputStream(output);
        out.writeObject("C:/Testing.txt");
        byte[] buffer = new byte[socket.getSendBufferSize()];
        int bytesReceived = 0;
        while ((bytesReceived = in.read(buffer)) > 0) {
            output.write(buffer, 0, bytesReceived);
        }
        out.flush();
        out.close();
        in.close();
        server.close();
        socket.close();
        output.flush();
        output.close();
        System.out.println("Finished");
    }

}

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.net.Socket;

public class Client {

    public static void main(String[] args) throws Exception {
        System.out.println("Starting...");
        Socket socket = new Socket("IP ADDRESS", 2649);
        InputStream input = socket.getInputStream();
        ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
        FileOutputStream out = new FileOutputStream(new File((String) in.readObject()));
        byte[] buffer = new byte[socket.getReceiveBufferSize()];
        int bytesReceived = 0;
        while ((bytesReceived = input.read(buffer)) > 0) {
            out.write(buffer, 0, bytesReceived);
        }
        in.close();
        out.close();
        input.close();
        socket.close();
        System.out.println("Finished");
    }

Ответы [ 2 ]

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

если это не брандмауэр.убедитесь, что вы привязываете сокет сервера к 0.0.0.0, а не к localhost.попробуйте вызвать server.bind (новый InetSocketAddress ("0.0.0.0", порт));

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

«Тайм-аут соединения» -> межсетевой экран отбрасывает пакеты. Скорее всего, брандмауэр Windows - попробуйте отключить его и посмотреть, смогут ли они подключиться.

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