Java - 无法与 ServerSocket 连接

标签 java sockets port

我正在尝试使用端口为 2649 的 ServerSocket,但其他人无法连​​接。它适用于本地主机。这是人们在尝试连接时遇到的错误:

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

当我在 canyouseeme.org 上检查端口 2649 时,它说连接超时。

我也在使用 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");
    }

最佳答案

如果不是防火墙。确保将服务器套接字绑定(bind)到 0.0.0.0 而不是本地主机。 尝试调用 server.bind(new InetSocketAddress("0.0.0.0", port));

关于Java - 无法与 ServerSocket 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9048598/

相关文章:

java - 如何始终在 SWT 表中显示垂直滚动条?

java - 如何在运行时获取weblogic托管服务器监听端口?

java - 如何使用急切获取定义 "select *"JPA 谓词?

java - hibernate 状态下有类似 Nor 的东西吗?

java - SQLite登录授权失败

php - iOS 选择哪种服务器端语言,以及在处理套接字连接时首选哪种服务器后端

node.js - 将 restify 与 socket.io 一起使用时出现“ header 已发送”错误

php - 通过客户端和服务器的安全命令

ios - NSRunLoop 是做什么的?

java - 如何获取已占用的端口?