分离机器之间的套接字通信

时间:2014-09-03 13:15:56

标签: java sockets

采取以下基本计划:

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

public class TestServer {
    public static void main(String[] args) throws IOException {
        ServerSocket listener = new ServerSocket(12345);
        try {
            while (true) {
                Socket socket = listener.accept();
                try {
                    PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
                    out.println(new java.util.Date().toString());
                    out.close();
                } finally {
                    socket.close();
                }
            }
        } finally {
            listener.close();
        }
    }
}


public class TestClient {
    public static void main(String[] args) {
        try {
            Socket socket = new Socket("0.0.0.0",12345); // Stack trace points to this line as the one with the error
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            System.out.println(in.readLine());
            in.close();
            socket.close();
        } catch (IOException e) {
            System.err.println("IOException: " + e.getMessage());
        }
    }
}

TestServer程序等待客户端连接到它,以便它可以向客户端发送信息,在本例中为当前日期。在我的IDE中的家用计算机(顺便说一下,JCreator),我可以在同一台计算机上同时运行TestServer程序和TestClient程序,并获得所需的结果。问题是当我在不同的计算机上运行TestClient程序并尝试连接到TestServer程序时,我不断收到消息IOException: Connection refused。< / p>

有什么方法可以让它发挥作用吗?

1 个答案:

答案 0 :(得分:1)

您尝试使用错误的IP地址( 0.0.0.0 )连接到服务器。

您需要知道运行服务器程序的计算机的IP地址,并使用它来实例化客户端程序中的套接字。

请注意,应该可以从客户端计算机访问服务器。