线程异常 "main" java.net.ConnectException:连接被拒绝:连接套接字编程 Java
Exception in thread "main" java.net.ConnectException: Connection refused: connect Socket Programming Java
最近学习了客户端和服务器之间的Socket编程。所以我想做一个连接客户端和服务器的练习。但是,当我尝试 运行 代码时遇到此错误消息:
线程中出现异常 "main" java.net.ConnectException:连接被拒绝:连接
这是我的客户class代码:
public class clientpart {
public static void main(String[]args) throws UnknownHostException, IOException {
Scanner input = new Scanner(System.in);
int port = 8080;
String host=null;
String answer; String sendMessage; String receivedMessage;
InetAddress address = InetAddress.getByName(host);
Socket socket= new Socket(address,port);
OutputStream os = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
System.out.println("Please answered the following question: ");
System.out.println("What is the subject code for Socket Programming?");
answer = input.nextLine();
sendMessage = answer;
bw.write(sendMessage);
bw.newLine();
bw.flush();
System.out.println("Message sent to server: "+sendMessage);
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
receivedMessage = br.readLine();
System.out.println("Message received from server : " + receivedMessage);
}
}
这是我的服务器代码:
public class serverpart {
public static Socket socket;
public static void main(String[]args) throws IOException {
int port = 8080;
String answer; String returnedMessage; String reply;
ServerSocket server = new ServerSocket(port);
System.out.println("Server start at port "+port+".");
while(true)
{
socket = server.accept();
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
answer = br.readLine();
System.out.println("Message sent from client: " + answer);
if("NET 3202".equals(answer) || "net 3202".equals(answer) || "NET3202".equals(answer) || "net3202".equals(answer)){
reply = "Correct!";
returnedMessage = reply;
}
else{
reply = "Wrong!";
returnedMessage = reply;
}
OutputStream os = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
bw.write(returnedMessage);
bw.newLine();
System.out.println("Message replied to client: "+returnedMessage);
bw.flush();
}
}
}
完整的错误信息是:
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 clientpart.main(clientpart.java:13)
C:\Users\PeiErn\AppData\Local\NetBeans\Cache.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 1 second)
希望有人能帮帮我,谢谢
你的程序有 2 个问题:
- 您使用的端口
80
是 well-known ports 或 系统端口 (0 到 1023)的一部分,因此您需要启动服务器具有管理员权限或将其更改为 8080
例如。
- 您忘记调用
bw.newLine()
after each bw.write(sendMessage)
such that it waits for ever since on the other side you call br.readLine()
这意味着它会等待整行,而您没有发送行尾字符。
为此更改您的代码:
服务器部分:
public class serverpart {
public static Socket socket;
public static void main(String[]args) throws IOException {
int port = 8080;
...
BufferedWriter bw = new BufferedWriter(osw);
bw.write(returnedMessage);
bw.newLine();
...
输出:
Server start at port 8080.
Accepted
Message sent from client: net3202
Message replied to client: Correct!
客户端部分:
public class clientpart {
public static void main(String[]args) throws IOException {
Scanner input = new Scanner(System.in);
int port = 8080;
...
bw.write(sendMessage);
bw.newLine();
bw.flush();
...
输出:
Please answered the following question:
What is the subject code for Socket Programming?
net3202
Message sent to server: net3202
Message received from server : Correct!
最近学习了客户端和服务器之间的Socket编程。所以我想做一个连接客户端和服务器的练习。但是,当我尝试 运行 代码时遇到此错误消息: 线程中出现异常 "main" java.net.ConnectException:连接被拒绝:连接
这是我的客户class代码:
public class clientpart {
public static void main(String[]args) throws UnknownHostException, IOException {
Scanner input = new Scanner(System.in);
int port = 8080;
String host=null;
String answer; String sendMessage; String receivedMessage;
InetAddress address = InetAddress.getByName(host);
Socket socket= new Socket(address,port);
OutputStream os = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
System.out.println("Please answered the following question: ");
System.out.println("What is the subject code for Socket Programming?");
answer = input.nextLine();
sendMessage = answer;
bw.write(sendMessage);
bw.newLine();
bw.flush();
System.out.println("Message sent to server: "+sendMessage);
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
receivedMessage = br.readLine();
System.out.println("Message received from server : " + receivedMessage);
}
}
这是我的服务器代码:
public class serverpart {
public static Socket socket;
public static void main(String[]args) throws IOException {
int port = 8080;
String answer; String returnedMessage; String reply;
ServerSocket server = new ServerSocket(port);
System.out.println("Server start at port "+port+".");
while(true)
{
socket = server.accept();
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
answer = br.readLine();
System.out.println("Message sent from client: " + answer);
if("NET 3202".equals(answer) || "net 3202".equals(answer) || "NET3202".equals(answer) || "net3202".equals(answer)){
reply = "Correct!";
returnedMessage = reply;
}
else{
reply = "Wrong!";
returnedMessage = reply;
}
OutputStream os = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
bw.write(returnedMessage);
bw.newLine();
System.out.println("Message replied to client: "+returnedMessage);
bw.flush();
}
}
}
完整的错误信息是:
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 clientpart.main(clientpart.java:13)
C:\Users\PeiErn\AppData\Local\NetBeans\Cache.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 1 second)
希望有人能帮帮我,谢谢
你的程序有 2 个问题:
- 您使用的端口
80
是 well-known ports 或 系统端口 (0 到 1023)的一部分,因此您需要启动服务器具有管理员权限或将其更改为8080
例如。 - 您忘记调用
bw.newLine()
after eachbw.write(sendMessage)
such that it waits for ever since on the other side you callbr.readLine()
这意味着它会等待整行,而您没有发送行尾字符。
为此更改您的代码:
服务器部分:
public class serverpart {
public static Socket socket;
public static void main(String[]args) throws IOException {
int port = 8080;
...
BufferedWriter bw = new BufferedWriter(osw);
bw.write(returnedMessage);
bw.newLine();
...
输出:
Server start at port 8080.
Accepted
Message sent from client: net3202
Message replied to client: Correct!
客户端部分:
public class clientpart {
public static void main(String[]args) throws IOException {
Scanner input = new Scanner(System.in);
int port = 8080;
...
bw.write(sendMessage);
bw.newLine();
bw.flush();
...
输出:
Please answered the following question:
What is the subject code for Socket Programming?
net3202
Message sent to server: net3202
Message received from server : Correct!