Java Socket 异常 : java.net.SocketTimeoutException:接受超时

标签 java sockets exception network-programming artificial-intelligence

我必须在游戏上创建 IA。

要执行此操作,我必须将我连接到服务器,但我不能..

我会解释一下。我的老师拿走我的 java 项目并执行 Launching.class。 在文件 Launching.java 和 Connection.java 中,我尝试在服务器上连接我。

当我的老师执行该文件时,参数是:服务器名称、服务器上的端口号以及 map 的大小(此处并不重要)

我创建了一个本地服务器,一切都很好,但是当我发送我的文件并且当我的老师测试它时,他向我发送了一个错误:

Serveur : accept() du serveur pour le second joueur (n° 1) impossible ; java.net.SocketTimeoutException: Accept timed out

我认为我的代码很简单,所以我寻求帮助。

为了连接我,我使用下面的两个文件“Launching.jaa”和“Connection.java”:

启动.java

public class Launching
{
    private String addressIP;
    private int port;

    public Launching()
    {
        this.addressIP = "";
        this.port = 0;
    }

    public void setAddressIP(String addressIP)
    {
        this.addressIP = addressIP;
    }

    public String getAddressIP()
    {
        return this.addressIP;
    }

    public void setPort(int port)
    {
        this.port = port;
    }

    public int getPort()
    {
        return this.port;
    }

    public static void main(String[] parameters) throws Exception
    {
        Launching parametersLaunching = new Launching();
        parametersLaunching.addressIP = parameters[0];
        parametersLaunching.port = Integer.parseInt(parameters[1]);

        try
        {
            Connection connection = new Connection(parametersLaunching.addressIP, parametersLaunching.port);
            connection.setInputStream(connection.getSocket());
            connection.setOutputStream(connection.getSocket());
            if(connection.getInputStream() != null && connection.getOutputStream() != null)
            {
                Game game = new Game(connection.getInputStream(), connection.getOutputStream(), Integer.parseInt(parameters[2]));
                game.start();
            }
            if(connection.getInputStream() != null)
            {
                connection.getInputStream().close();
            }
            if(connection.getOutputStream() != null)
            {
                 connection.getOutputStream().close();
            }
            if(connection.getSocket() != null)
            {
                connection.getSocket().close();
            }
            connection.getSocket().close();
        }
        catch(UnknownHostException exception)
        {
            exception.printStackTrace();
        }
        catch(IOException exception)
        {
            exception.printStackTrace();
        }
    }
}

Connection.java

package network;

import java.io.*;
import java.net.*;

public class Connection
{   
    private Socket socket;
    private InputStream inputStream;
    private OutputStream outputStream;

    public Connection(String adressIP, int port) throws Exception
    {
        InetAddress adress = InetAddress.getByName("adressIP");
        this.socket = new Socket(adress, port);
        this.inputStream = null;
        this.outputStream = null;
    }

    public InputStream getInputStream()
    {
        return this.inputStream;
    }

    public OutputStream getOutputStream()
    {
        return this.outputStream;
    }

    public Socket getSocket()
    {
        return this.socket;
    }

    public void setInputStream(Socket socket) throws IOException
    {
        this.inputStream = socket.getInputStream();
    }

    public void setOutputStream(Socket socket) throws IOException
    {
        this.outputStream = socket.getOutputStream();
    }   
}

那么你有什么想法可以帮助我吗?我想保留这个架构..

最佳答案

InetAddress adress = InetAddress.getByName("adressIP");

这总是将字符串“adressIP”分配给地址,而不是参数adressIP

关于Java Socket 异常 : java.net.SocketTimeoutException:接受超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33255514/

相关文章:

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

c++ - 如何检查发送到特定端口上的 IP 地址的数据?

java - Java 中的异常处理和接口(interface)

java - 如何通过 ID 和 NamedNodeMap 获取 XML 节点 - Java DOM XML

java - 将 getResource 与 ProGuard 一起使用会导致空结果

java - 测试远程端口是否被占用

java - 尝试使用原始套接字发送 GET 请求时收到 301

c# - 如何捕获此 WPF 位图加载异常?

java - 如何在Java升序中按内部值对对象排序?

java - Play 框架中 `play run` 和 `play akka start` 命令的区别