最近我在看socket通信,在看了幾個教程之後,我發現了類似的東西。如何使套接字通信?
public class Server{
public static void main(String[] args) throws IOException, InterruptedException {
ServerSocket server = new ServerSocket(9999);
Socket socket = server.accept();
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String message = "";
int ch = -1;
while((ch=in.read())!= -1){
message+=ch;
}
// String message = in.readLine();
System.out.println("RECEIVED "+message);
out.write("RESPONSE "+message+"\n");
out.flush();
System.out.println("NEW MESSAGE SEND");
Thread.sleep(3000);
System.out.println("CLOSE");
server.close();
}
}
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket socket = new Socket("127.0.0.1", 9999);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.write("MESSAGE\n");
out.flush();
System.out.println("SEND MESSAGE");
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println(in.readLine());
socket.close();
}
}
後運行此代碼,Client
日誌"SEND MESSAGE"
而服務器掛起in.read()
並且不接收任何消息。 任何人都可以幫我解釋我做錯了什麼嗎?
您是否按照[官方教程](https://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html)? –
@ GermannArlington是的。否則,他無法在其周圍包裝「BufferedReader」。 – EJP
@GermannArlington這是錯的。 'BufferedReader'不需要'InputStream'作爲參數。 –