Java中使用JSON进行socket通信

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版权协议,转载请附上原文出处链接和本声明。