服务器套接字不接受客户端

时间:2011-10-13 16:41:19

标签: java sockets

我正在学习java中的套接字。我能够将客户端套接字连接到在线服务器,但我可以将它们连接到我自己的服务器套接字!

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

class Blargh2 {
    public static void main(String[] args) {
        Socket client = null;
        ServerSocket server = null;
        System.out.println("Line one reacehd!");
        try {
            server = new ServerSocket(4445);
        } catch (Exception e) {
            System.out.println("Error:" + e.getMessage());
        }
        System.out.println("Line two reacehd!");
        try {
            client = server.accept();
        } catch (IOException e) {
            System.out.println("Accept failed: 4444");
            System.exit(-1);
        }

        System.out.println("Line three reacehd!");
        try {
            server.close();
            client.close();
        } catch (IOException e) {
            System.out.println("Accept failed: 4444");
            System.exit(-1);
        }
    }
}

程序到达第一行和第二行但它从未到达第3行! 谁能帮我解决这个问题?防火墙也允许这种连接...

2 个答案:

答案 0 :(得分:3)

它永远不会到达第3行,因为您需要一个远程TCP套接字(尽管它可以是本地的,用于测试)连接到端口4445上的套接字。您接受服务器上的端点套接字,用于与远程通信客户。这里实际上没有客户端,所以它会无限期地等待,或直到accept()呼叫超时。

答案 1 :(得分:0)

尝试运行此代码,然后在看到第2行执行后,再运行windows命令:

telnet localhost 4445

然后你应该看到你的第3行被执行了。