客户端-服务器连接被拒绝-Java



我正在学习网络编程。我已尝试实现客户端-服务器连接。然而,我遇到了一个错误:"线程中的异常";主";java.net.ConnectException:拒绝连接(拒绝连接(">

我已尝试将端口从端口4999更改为端口8080

客户代码:

import java.net.*;
import java.io.*;
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost", 8080);

PrintWriter pr = new PrintWriter(socket.getOutputStream()); 
pr.println("is it working ");
pr.flush();

InputStreamReader in = new InputStreamReader(socket.getInputStream());
BufferedReader bf = new BufferedReader(in);

String str = bf.readLine();
System.out.println("server : " + str);
}
}

服务器代码:

import java.net.*;
import java.io.*;
public class Server {
public static void main(String[] args) throws IOException{
ServerSocket ss = new ServerSocket(8080);
Socket socket = ss.accept();
System.out.println("client connected");

InputStreamReader in = new InputStreamReader(socket.getInputStream());
BufferedReader bf = new BufferedReader(in);

String str = bf.readLine();
System.out.println("client : " + str);

PrintWriter pr = new PrintWriter(socket.getOutputStream());
pr.println("yes");
pr.flush();
}
}

完全错误:

~/test$ javac Client.java
~/test$ javac Server.java
~/test$ java Server
client connected
client : GET / HTTP/1.1
~/test$ java Client
Exception in thread "main" java.net.ConnectException: Connection refused (Connection refused)
at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.base/java.net.Socket.connect(Socket.java:609)
at java.base/java.net.Socket.connect(Socket.java:558)
at java.base/java.net.Socket.<init>(Socket.java:454)
at java.base/java.net.Socket.<init>(Socket.java:231)
at Client.main(Client.java:7)

我不知道为什么连接被拒绝

感谢您的帮助

由于服务器已终止,连接被拒绝
Server.java中的代码读取一行,发送响应("yes"(,然后终止
您的输出显示它正在打印"GET / HTTP/1.1",这表明其他东西(而不是您的Client类(已通过HTTP请求到达端口8080(这对端口8080来说并不意外(
服务器会做出响应,然后终止,返回shell提示符
然后,当您运行java Client时,没有服务器在运行,您会看到连接错误
如果希望服务器读取多个请求,而不是在一个请求之后终止,则需要围绕从bf.readLinepr.flush的所有内容进行循环。

最新更新