一个需求就是客户端传递json给服务端,当然用String来可以。
服务端收到后进行处理,发送响应报文给客户端。
具体代码如下
值得注意的一点是:readLine函数一定要有“\n”才能结束,不然的话会一直读取直到读到“\n”为止。
所以必须在String的后面加上“,”
原来readLine()方法在进行读取一行时,只有遇到回车(\r)或者换行符(\n)才会返回读取结果,这就是“读取一行的意思”,重要的是readLine()返回的读取内容中并不包含换行符或者回车符;
并且,当realLine()读取到的内容为空时,并不会返回 null,而是会一直阻塞,只有当读取的输入流发生错误或者被关闭时,readLine()方法才会返回null。
Client端的
package com.rosam.ywttest.test;
import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client03 {
public static void main(String[] args) {
try {
Socket s = new Socket("127.0.0.1",8885);
//构建IO
InputStream is = s.getInputStream();
OutputStream os = s.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
String jsonParams="我是一个json字符串";
//向服务器端发送一条消息
bw.write(jsonParams+"\n");
bw.flush();
//读取服务器返回的消息
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String mess = br.readLine();
System.out.println("服务器:"+mess);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Server端的
package com.rosam.ywttest.test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server03 {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(8885);
System.out.println("启动服务器....");
Socket s = ss.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
//读取客户端发送来的消息
String mess = br.readLine();
System.out.println("我收到了客户端的东西"+mess);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String jsonParams="服务端----专属,给你一份吧";
bw.write(jsonParams+"\n");
bw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}