zoukankan      html  css  js  c++  java
  • 实现客户端与服务端之间传输json数据

    步骤:
    创建数据库,并创建表。
    利用myeclipse创建新工程,利用JDBC实现java操纵数据库。
    实现客户端类,服务端类。
    具体实现:
    创建数据表
    create table usertable
    (
    username VARCHAR(20),
    pawd VARCHAR(20)
    );
    1
    2
    3
    4
    5
    利用JDBC实现java操纵数据库
    public class DBUtil {
    private static final String url="jdbc:mysql://localhost/user?characterEncoding=utf8&useSSL=false";//主机名,密码等信息
    private static final String name="your databasename";//数据库用户名
    private static final String password="your password";//数据库密码
    1
    2
    3
    4

    private Connection connection=null;
    static
    {

    try {
    Class.forName("com.mysql.jdbc.Driver");//首先要加载一个驱动类


    connection=DriverManager.getConnection(url, name, password);

    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }


    }
    public static Connection connect() throws SQLException
    {

    return DriverManager.getConnection(url, name, password);
    }



    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    实现客户端类
    package com.timmy.main;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.net.UnknownHostException;

    import net.sf.json.JSONObject;

    public class Client {

    public static void main(String[] args) throws UnknownHostException, IOException {
    Socket socket=new Socket("localhost",8888);//客户端socket,用来发送数据。
    OutputStream outputStream=socket.getOutputStream();
    //PrintWriter pWriter=new PrintWriter(outputStream);
    //创建json格式数据
    JSONObject jsonObject=new JSONObject();
    //填充json数据内容
    jsonObject.put("username", "kongxiangyue");
    jsonObject.put("password", "123456");
    //json转化成字符串
    String string=jsonObject.toString();
    //字符串转化byte数组
    byte[] bytes=string.getBytes();
    //发送json数据
    //pWriter.write(bytes);
    outputStream.write(bytes);
    outputStream.flush();//刷新,向服务器发送信息;
    //pWriter.
    //pWriter.flush();
    socket.shutdownOutput();

    //pWriter.close();
    outputStream.close();
    socket.close();


    int port =socket.getLocalPort();
    System.out.println(port);

    ServerSocket serverSocket=new ServerSocket(port);

    Socket socket1=serverSocket.accept();

    InputStream is=socket1.getInputStream();
    InputStreamReader inr =new InputStreamReader(is);
    BufferedReader bReader=new BufferedReader(inr);
    String data = bReader.readLine();
    while(data!=null)
    {
    System.out.println("数据是:"+data);
    data=bReader.readLine();
    }

    socket1.shutdownInput();
    bReader.close();
    inr.close();
    is.close();
    socket1.close();
    }

    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    实现服务端类
    package com.timmy.main;

    import java.io.BufferedReader;
    import java.io.ByteArrayOutputStream;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;

    import net.sf.json.JSON;
    import net.sf.json.JSONObject;

    import com.timmy.util.DBUtil;

    public class main {

    public static void main(String[] args) {
    try {
    ServerSocket serverSocket=new ServerSocket(8888);//绑定端口号
    System.out.println("***服务器已经打开***");//提示信息
    Socket socket=null;//
    Integer count=0;
    socket=serverSocket.accept();//这个socket用来读取接受的数据

    DataInputStream inputStream = null; //数据输入流
    DataOutputStream outputStream = null; //数据输出流
    String strInputstream ="";

    inputStream =new DataInputStream(socket.getInputStream());
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 可以捕获内存缓冲区的数据,转换成字节数组
    byte[] by = new byte[2048];
    int n;
    while((n=inputStream.read(by))!=-1){ //将流中的数据缓冲到字节数组中去,如果没到末尾返回的是真实个数,到末尾时,返回的是-1;
    baos.write(by,0,n); //readline将会把json格式破坏掉
    }
    strInputstream = new String(baos.toByteArray());
    socket.shutdownInput();
    baos.close();


    JSONObject jsonObject=JSONObject.fromObject(strInputstream);
    String username=jsonObject.optString("username");
    String password=jsonObject.optString("password");
    System.out.println(jsonObject.toString());


    Connection connection=DBUtil.connect();
    String sql="insert into usertable values(?,?)";

    PreparedStatement ptmt=connection.prepareStatement(sql);
    ptmt.setString(1, username);
    ptmt.setString(2, password);
    ptmt.execute();


    //服务器响应客户端
    int port =socket.getPort();
    System.out.println(port);

    Socket socket1=new Socket("localhost",port);
    OutputStream os = socket1.getOutputStream();
    PrintWriter pw =new PrintWriter(os);
    pw.write("数据已录入数据库");
    pw.flush();
    socket1.shutdownOutput();
    pw.close();
    os.close();
    socket1.close();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }



    }
    }
    ---------------------
    作者:Raphaelkxy
    来源:CSDN
    原文:https://blog.csdn.net/qq_29726359/article/details/75331946
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    一个maven问题
    zz 聊聊并发(七)——Java中的阻塞队列
    聊聊并发(六)
    jvm 内存参数
    zz 聊聊并发(五)
    zz 聊聊并发(四)
    zz 聊聊并发(三)
    zz 聊聊并发(二)
    zz 聊聊并发(一)
    JQuery中$.ajax()方法参数详解
  • 原文地址:https://www.cnblogs.com/muhy/p/10493772.html
Copyright © 2011-2022 走看看