Java中使用JSON进行socket通信
使用JSON进行socket通信,JSON可以理解为键值对的集合,代码如下(带注释):
客户端:
import net.sf.json.JSONObject;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class MyClient {
public static void main(String[] args) throws IOException {
Socket socket=new Socket("localhost",6666);
//向服务器发送数据
OutputStream os=socket.getOutputStream();
OutputStreamWriter osw=new OutputStreamWriter(os);
BufferedWriter bw=new BufferedWriter(osw);
//确定要发送的数据
MyUser myUser=new MyUser("数据库",6789);
//转换成JSON格式
JSONObject jsonObject = JSONObject.fromObject(myUser);
bw.write(jsonObject+"\n");
bw.close();
socket.close();
}
}
服务器:
package MyTest;
import net.sf.json.JSONObject;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class MyServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket=new ServerSocket(6666);
Socket socket=serverSocket.accept();
//读数据
InputStream is=socket.getInputStream();
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
String str=br.readLine();
//将收到的数据转换为JSON格式
JSONObject object=JSONObject.fromObject(str);
System.out.println("服务器名称为:"+object.getString("name")+",端口号为:"+object.getInt("port"));
br.close();
socket.close();
}
}
代码中使用的MyUser类:
package MyTest;
public class MyUser {
private String name;
private int port;
public MyUser() {
}
public MyUser(String name, int port) {
this.name = name;
this.port = port;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "MyUser{" +
"name='" + name + '\'' +
", port=" + port +
'}';
}
public void setName(String name) {
this.name = name;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
}
自己处于Java入门阶段,只是将自己理解的东西记录下来,不对的地方还望大神们不惜赐教。
版权声明:本文为weixin_39688581原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。