繁体   English   中英

Java TCP服务器和客户端-java.net.ConnectException:连接超时

[英]Java TCP Server&client - java.net.ConnectException: Connection timed out

尝试连接到TCP服务器时出现此错误:

java.net.ConnectException: Connection timed out: connect
java.net.ConnectException: Connection timed out: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at java.net.Socket.connect(Socket.java:528)
    at java.net.Socket.<init>(Socket.java:425)
    at java.net.Socket.<init>(Socket.java:208)
    at gui.ChessPanel$ChessServerConnection.<init>(ChessPanel.java:211)
    at gui.ChessPanel.<init>(ChessPanel.java:32)
    at gui.ChessFrame.initialize(ChessFrame.java:29)
    at gui.ChessFrame.<init>(ChessFrame.java:23)
    at dcnw_chess.TCPClient.main(TCPClient.java:28)
BUILD SUCCESSFUL (total time: 4 minutes 55 seconds)

这是来自客户端的代码:

公共类ChessServerConnection {

    private static final int PORT = 8000;
    private static final String HOST = "109.133.4.149";
    //private static final String HOST = "213.49.237.163";
    InputHandlerThread inputhandler;

    private Socket sock;
    private BufferedReader in;
    private PrintWriter out;

    public ChessServerConnection() {
        try {
            sock = new Socket(HOST, PORT);

            in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
            out = new PrintWriter(sock.getOutputStream(), true);

            inputhandler = new InputHandlerThread(this, in);
            inputhandler.start();
        } catch (Exception e) {
            System.out.println(e);
            e.printStackTrace();
        }
    }

这是服务器上的代码。

 private static SpelController sc = SpelController.getInstance();
    private ServerSocket serverSocket;
    Vector client_socks = new Vector(1);

public static void main(String[] args) {
    try {
        TCPServer server = new TCPServer(8000);
    } catch (IOException ex) 
    {
        System.out.println("An error occurred while launching the server!");
    }
}

public TCPServer(int port) throws IOException {
    ServerSocket serverSock = new ServerSocket(port);
    Socket clientSock;

    String cliAddr;

    while (true) {
        System.out.println("Waiting for a client...");
        clientSock = serverSock.accept();

        if (client_socks.size() >= 2) {
            System.out.println("Server connection capacity reached.");
            clientSock.close();
            continue;
        }

        client_socks.addElement(clientSock);

        sendIdentity();
        sendBoard();
        cliAddr = clientSock.getInetAddress().getHostAddress();
        new TCPClientHandler(clientSock, cliAddr, this).start();
    }

我关闭了两台计算机的防火墙...

尝试这个; 如果不起作用,请尝试hamachi,如果不起作用,则您的路由器或防火墙可能正在阻止该端口。

private static final int PORT = 443;
private static final String HOST = "109.133.4.149";
//private static final String HOST = "213.49.237.163";
InputHandlerThread inputhandler;

private Socket sock;
private BufferedReader in;
private PrintWriter out;

public ChessServerConnection(String host1, int port1) {
    PORT = port1;
    HOST = host1;
    try {
        sock = new Socket(HOST, PORT);

        in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
        out = new PrintWriter(sock.getOutputStream(), true);

        inputhandler = new InputHandlerThread(this, in);
        inputhandler.start();
    } catch (Exception e) {
        System.out.println(e);
        e.printStackTrace();
    }
}

新文件,但在同一项目中:

import javax.swing.JFrame;
public class ChessServerConnectionRUN{
    public static void main(String[] args){
        ChessServerConnection rungui;
        rungui = new ChessServerConnection("youIP", 443);
        rungui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        rungui.startClienting();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM