TCP 客户端在 JAVA 后未响应
TCP client not responding in JAVA
我正在学习 JAVA 网络 API 和简单的 TCP 服务器-客户端通信。
我为客户端和服务器写了以下两个类。
问题是我的客户端没有响应,即程序没有终止,也没有输出任何东西。谁能看出我哪里出错了?
客户:
import java.io.*;
import java.net.*;
public class client {
public void go() {
try {
Socket s = new Socket("127.0.0.1",2323);
InputStreamReader streamReader = new InputStreamReader(s.getInputStream());
BufferedReader reader = new BufferedReader(streamReader);
String reading = reader.readLine();
PrintWriter write = new PrintWriter(s.getOutputStream());
write.print("mynameistom");
System.out.println(reading);
reader.close();
writeToServer.close();
} catch(IOException ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
Client client = new Client;
client.go();
}
}
服务器:
package TCP;
import java.io.*;
import java.net.*;
public class Server {
public void go() {
try {
ServerSocket serverSock = new ServerSocket(2323);
Socket socket = serverSock.accept();
InputStreamReader streamReader = new InputStreamReader(socket.getInputStream());
BufferedReader reader = new BufferedReader(streamReader);
String messsage = reader.readLine();
PrintWriter writer = new PrintWriter(socket.getOutputStream())
writer.println(message);
writer.close();
System.out.println(message);
} catch(IOException ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
Server server = new Server();
server.go();
}
}
很明显,客户端没有刷新,并且缺少新行。
PrintWriter writeToServer = new PrintWriter(s.getOutputStream());
writeToServer.print("network");
应该是
PrintWriter writeToServer = new PrintWriter(s.getOutputStream(), true);
writeToServer.println("network");
或
PrintWriter writeToServer = new PrintWriter(s.getOutputStream());
writeToServer.println("network");
writeToServer.flush();
我正在学习 JAVA 网络 API 和简单的 TCP 服务器-客户端通信。 我为客户端和服务器写了以下两个类。 问题是我的客户端没有响应,即程序没有终止,也没有输出任何东西。谁能看出我哪里出错了?
客户:
import java.io.*;
import java.net.*;
public class client {
public void go() {
try {
Socket s = new Socket("127.0.0.1",2323);
InputStreamReader streamReader = new InputStreamReader(s.getInputStream());
BufferedReader reader = new BufferedReader(streamReader);
String reading = reader.readLine();
PrintWriter write = new PrintWriter(s.getOutputStream());
write.print("mynameistom");
System.out.println(reading);
reader.close();
writeToServer.close();
} catch(IOException ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
Client client = new Client;
client.go();
}
}
服务器:
package TCP;
import java.io.*;
import java.net.*;
public class Server {
public void go() {
try {
ServerSocket serverSock = new ServerSocket(2323);
Socket socket = serverSock.accept();
InputStreamReader streamReader = new InputStreamReader(socket.getInputStream());
BufferedReader reader = new BufferedReader(streamReader);
String messsage = reader.readLine();
PrintWriter writer = new PrintWriter(socket.getOutputStream())
writer.println(message);
writer.close();
System.out.println(message);
} catch(IOException ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
Server server = new Server();
server.go();
}
}
很明显,客户端没有刷新,并且缺少新行。
PrintWriter writeToServer = new PrintWriter(s.getOutputStream());
writeToServer.print("network");
应该是
PrintWriter writeToServer = new PrintWriter(s.getOutputStream(), true);
writeToServer.println("network");
或
PrintWriter writeToServer = new PrintWriter(s.getOutputStream());
writeToServer.println("network");
writeToServer.flush();