I am trying to establish a connection between a server and a client in Java, using java.net. I manage to connect, but not to send any data. I have pasted the code and the outputs:
Server Code:
ServerSocket welcomeSocket = new ServerSocket(999);
Socket connectionSocket = welcomeSocket.accept();
System.out.println("Connected to: " + connectionSocket.toString());
DataOutputStream outToClient = newDataOutputStream(connectionSocket.getOutputStream());
outToClient.writeBytes("Testing connection");
Client Code:
Socket clientSocket = new Socket("130.236.248.52", 999);
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
modifiedSentence = inFromServer.readLine();
System.out.println("[From server:] " + modifiedSentence);
Server output:
Connected to: Socket[addr=/130.236.248.54,port=51535,localport=999]
Client output:
解决方案Use a BufferedWriter to write text (just like you're using a BufferedReader to read text)
Call flush() on your writer to force the output to go through
If you're calling readLine() on the client side, there needs to be an end-of-line to read.
BufferedWriter outToClient = new BufferedWriter(new OutputStreamWriter(connectionSocket.getOutputStream()));
outToClient.write("Testing connection");
outToClient.newLine();
outToClient.flush();