简单客户端服务器通信

时间:2012-02-06 11:23:59

标签: java sockets

我目前正在学习使用Java通过套接字进行客户端服务器通信。 首先,我使用以下代码检索自己机器的IP地址。

InetAddress ownIP=InetAddress.getLocalHost();
//the result being 192.168.56.1

现在我使用上面提到的地址编写简单的客户端服务器应用程序

public class SimpleClientServer {
public static void main(String[] args)
{
    //sending "Hello World" to the server
    Socket clientSocket = null;
    PrintWriter out = null;
    BufferedReader in = null;

    try
    {

        clientSocket = new Socket("192.168.56.1", 16000);

        out = new PrintWriter(clientSocket.getOutputStream(), true);

        in = new BufferedReader(new InputStreamReader(
                                                 clientSocket.getInputStream()));

        out.println("Hello World");

        out.close();
        in.close();
        clientSocket.close();
    }
    catch(IOException e)
    {
        System.err.println("Error occured " + e);

    }
}
}

结果hower读取了一个。

Error occured java.net.ConnectException: Connection refused: connect

这是什么原因。它只是错误的主机地址吗?

2 个答案:

答案 0 :(得分:4)

从您给出的代码中,您似乎建议当前没有任何内容正在侦听端口16000以便连接到套接字。

如果是这种情况,您需要实现类似

的内容
ServerSocket serverSocket = null;
try {
    serverSocket = new ServerSocket(16000);
}
catch (IOException e) {
    System.err.println("Could not listen on port: 16000.");
    System.exit(1);
}

可在the Java online documentation中找到更多信息,其中包含a full example

答案 1 :(得分:2)

使用套接字,无论您使用何种语言,都可以使用socket_connect启动连接,也可以使用socket_listen和socket_accept进行侦听和接受。您的socket_connect调用正在尝试连接到一个似乎没有收听任何内容的IP地址。