无法将客户端服务器连接到本地网络

时间:2017-08-15 17:03:19

标签: java sockets

我正在学习Java编程,并编写了一个简单的程序,用于将客户端服务器连接到本地主机上的套接字服务器。但是每当我运行ClientServer程序时,都会出现错误,说明连接:拒绝。

我附上我编写的客户端代码和服务器代码,并附上控制台输出。

package Classes;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClientSer {

    /**
     * @param args
     * @throws IOException 
     * @throws UnknownHostException 
     */
    public static void main(String[] args) throws UnknownHostException, IOException {
        // TODO Auto-generated method stub

        Socket s = new Socket("localhost",1029);
        OutputStreamWriter os = new OutputStreamWriter(s.getOutputStream());

        String str = "tEST mESSAGE";

        os.write(str);
        os.flush();
    }
}

这是服务器代码:

package Classes;

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

public class SocketSer {
    public static void main(String args[]) throws Exception{
        ServerSocket ss =  new ServerSocket(1029);

        Socket s = ss.accept();

        BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));

        String str = br.readLine();
        System.out.print(str);
    }
}

控制台输出:

Exception in thread "main" java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
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 Classes.ClientSer.main(ClientSer.java:18)

1 个答案:

答案 0 :(得分:0)

在服务器中,你知道它在监听什么界面吗?

我会启动服务器,然后使用telnet尝试连接而不是客户端。您可能会发现服务器没有在localhost上侦听。或者它可能正在监听每个接口(127.0.0.1加上您的本地网络)。我只是不知道我是否信任SocketServer(portNumber)。

我会考虑创建一个未绑定的SocketServer,然后使用socket.bind(),为它提供一个由主机和端口构建的InetSocketAddress对象。