客户端套接字连接被拒绝

网狐

我试图了解套接字在 Java 中的工作原理,因此我想看看客户端-服务器实现。我发现了这个:Creating a Simple Java TCP/IP Server and Client Socket

如果我通过,服务器似乎可以正常工作,localhost或者127.0.0.1客户端将拒绝连接其中任何一个,抛出连接被拒绝的异常,尽管我在客户端之前启动了服务器。

服务器输出:

Running Server: Host=127.0.0.1 Port=5069

客户端输出:

Exception in thread "main" java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    at java.net.Socket.<init>(Socket.java:434)
    at java.net.Socket.<init>(Socket.java:244)
    at Client.<init>(Client.java:12)
    at Client.main(Client.java:29)

我的Java代码:

public class Server {
    private ServerSocket server;

    public Server(String ipAddress) throws Exception {
        if (ipAddress != null && !ipAddress.isEmpty()) {
//            System.out.println(InetAddress.getByName(ipAddress));
            this.server = new ServerSocket(0, 1, InetAddress.getByName(ipAddress));
        } else {
            this.server = new ServerSocket(0, 1, InetAddress.getLocalHost());
        }
    }

    private void listen() throws Exception {
        String data = null;
        Socket client = this.server.accept();
        String clientAddress = client.getInetAddress().getHostAddress();
        System.out.println("\r\nNew connection from " + clientAddress);

        BufferedReader in = new BufferedReader(
                new InputStreamReader(client.getInputStream()));
        while ((data = in.readLine()) != null) {
            System.out.println("\r\nMessage from " + clientAddress + ": " + data);
        }
    }

    public InetAddress getSocketAddress() {
        return this.server.getInetAddress();
    }

    public int getPort() {
        return this.server.getLocalPort();
    }

    public static void main(String[] args) throws Exception {
        Server app = new Server("localhost");
        System.out.println("\r\nRunning Server: " +
                                   "Host=" + app.getSocketAddress().getHostAddress() +
                                   " Port=" + 50696);

        app.listen();
    }

}

public class Client {
    private Socket socket;
    private Scanner scanner;

    private Client(InetAddress serverAddress, int serverPort) throws Exception {
        this.socket = new Socket(serverAddress, serverPort);
        this.scanner = new Scanner(System.in);
    }

    private void start() throws IOException {
        String input;
        while (true) {
            input = scanner.nextLine();
            PrintWriter out = new PrintWriter(this.socket.getOutputStream(), true);
            out.println(input);
            out.flush();
        }
    }

    public static void main(String[] args) throws Exception {
//        System.out.println( InetAddress.getByName("localhost"));
        Client client = new Client(
                InetAddress.getByName("127.0.0.1"), 50696);

        System.out.println("\r\nConnected to Server: " + client.socket.getInetAddress());
        client.start();
    }
}
枢机系统

如果您尝试连接到错误的端口,则连接将被拒绝(请参阅此答案)。您的服务器没有侦听端口5069您显然将其设置为在0此处侦听端口

if (ipAddress != null && !ipAddress.isEmpty()) {
    this.server = new ServerSocket(0, 1, InetAddress.getByName(ipAddress));
} else {
    this.server = new ServerSocket(0, 1, InetAddress.getLocalHost());
}

查看您使用的构造函数Javadoc

public ServerSocket(int port,
                    int backlog,
                    InetAddress bindAddr)
             throws IOException

参数:

port - 端口号,或 0 使用自动分配的端口号。

backlog - 请求的传入连接队列的最大长度。

bindAddr - 服务器将绑定到的本地 InetAddress

第一个参数是端口号,您传递0给两个构造函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在FTP客户端套接字程序中拒绝连接

来自分类Dev

在FTP客户端套接字程序中拒绝连接

来自分类Dev

套接字客户端连接

来自分类Dev

套接字连接被拒绝,但是客户端和服务器均独立工作

来自分类Dev

Java客户端套接字返回连接超时异常

来自分类Dev

通过套接字连接从kext验证客户端

来自分类Dev

TCP客户端套接字。连接并等待输入流

来自分类Dev

Web套接字连接从Android客户端失败

来自分类Dev

Android聊天客户端:套接字连接

来自分类Dev

服务器/客户端套接字连接

来自分类Dev

Python客户端不断失去与tcp套接字的连接

来自分类Dev

POSIX 套接字客户端连接到自身

来自分类Dev

Python套接字等待客户端连接

来自分类Dev

将客户端重新连接到不同的套接字

来自分类Dev

将客户端套接字与服务器套接字连接时出现问题

来自分类Dev

如何使服务器套接字广播到那里,并让客户端套接字检测并连接

来自分类Dev

PHP客户端套接字与C#套接字服务器的连接

来自分类Dev

Powershell SSL套接字客户端

来自分类Dev

套接字客户端如何setSoTimeout

来自分类Dev

Winsock客户端套接字无效

来自分类Dev

套接字中的Java客户端

来自分类Dev

Python tcp套接字客户端

来自分类Dev

C ++客户端/套接字问题

来自分类Dev

异步客户端Java套接字

来自分类Dev

Winsock客户端套接字无效

来自分类Dev

套接字客户端返回变量

来自分类Dev

套接字客户端永远阻塞

来自分类Dev

多个套接字客户端

来自分类Dev

断开与错误的客户端连接:客户端套接字写入错误:管道损坏-乘客5.0.2