步骤:
创建数据库,并创建表。
利用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
版权声明:本文为博主原创文章,转载请附上博文链接!

实现客户端与服务端之间传输json数据的更多相关文章

  1. WCF 客户端与服务端消息传输

    WCF很多需要认证信息,保证服务的安全,可以使用消息来实现 WCF 实现消息的方式: WCF中有两个接口: IClientMessageInspector [定义一个消息检查器对象,该对象可以添加到 ...

  2. 通过Socket实现TCP编程,用户登录之服务器相应客户端,客户端和服务端之间的通信

    服务器端: 1.创建ServerSocket对象,绑定监听端口: 2.通过accept()方法监听客户端请求: 3.建立连接后通过输入流读取客户端发送的请求信息; 4.通过输出流向客户端发送响应信息; ...

  3. 服务端提供的JSON数据接口与用户端接收解析JSON数据

    JSON格式的服务接口:http://www.cnblogs.com/visec479/articles/4118338.html 首先来了解下JSON格式解析 json结构的格式就是若干个 键/值( ...

  4. android菜鸟学习笔记25----与服务器端交互(二)解析服务端返回的json数据及使用一个开源组件请求服务端数据

    补充:关于PHP服务端可能出现的问题: 如果你刚好也像我一样,用php实现的服务端程序,采用的是apache服务器,那么虚拟主机的配置可能会影响到android应用的调试!! 在android应用中访 ...

  5. laravel跟jquery之间传输json数据

    laravel代码: public function test(){ $arr = ["test1"=>"1","test2"=> ...

  6. 服务端返回的json数据,导致前端报错的原因及解决方法

    前言 最近在开发的过程中遇到了一个问题:后端传过来的json字符串不是标准的json字符串 导致报错的原因 后端传过来的json字符串中包含一些不标准的字符或错误的引号嵌套 1)\n 2) \r 3) ...

  7. Android—Volley:接收服务端发送的json数据乱码问题解决

    new JsonObjectRequest中重写方法parseNetworkResponse,内容如下: /** * 重写此方法不会导致乱码 */ @Override protected Respon ...

  8. C# 一般处理程序ashx接收服务端post过来json数据

    这个和前端js的接收方式有点不一样,前端接收用request.form["xxx"]即可

  9. Docker学习笔记 - Docker客户端和服务端

    学习内容: Docker客户端和服务端的通讯方式:client和自定义程序 Docker客户端和服务端的连接方式:socket 演示Docker客户端和服务端之间用remote-api通讯:nc   ...

随机推荐

  1. DDD之3实体和值对象

    图中是一个别墅的模型,代表实体,可以真实的看得到.那么在DDD设计方法论中,实体和值对象是什么呢? 背景 实体和值对象是领域模型中的领域对象,是组成领域模型的基础单元,一起实现实体最基本的核心领域逻辑 ...

  2. Java实现 LeetCode 833 字符串中的查找与替换(暴力模拟)

    833. 字符串中的查找与替换 对于某些字符串 S,我们将执行一些替换操作,用新的字母组替换原有的字母组(不一定大小相同). 每个替换操作具有 3 个参数:起始索引 i,源字 x 和目标字 y.规则是 ...

  3. Java实现 蓝桥杯 算法提高 字符串匹配

    试题 算法提高 字符串匹配 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行.你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符:当选项关闭时 ...

  4. Java中Collections类详细用法

    1.sort(Collection)方法的使用(含义:对集合进行排序). 例:对已知集合c进行排序? public class Practice { public static void main(S ...

  5. Java实现斐波那契数列的多种方法

    小编综合了很多算法相关的书籍以及其他,总结了几种求斐波那契数列的方法 PS:其中的第83行的递归法是求斐波那契数列的经典方法 public class 斐波那契数列 { //迭代法 public st ...

  6. java实现数字黑洞

    任意一个 5 位数,比如:34256,把它的各位数字打乱,重新排列,可以得到 一个最大的数:65432,一个最小的数 23456. 求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不 ...

  7. java实现第三届蓝桥杯源码变换

    源码变换 这道题因为有一些html语言在编写的时候不会显示出来,所以就用代码格式把题目写出来 [编程题](满分22分) 超文本标记语言(即HTML),是用于描述网页文档的一种标记语言. HTML通过文 ...

  8. PAT 组个最小数

    给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就 ...

  9. 连接mongoodb并且向数据库添加信息

    连接mongoodb 首先安装mongoose 配置URL 连接Mongoodb数据库 控制台输入指令运行该js文件 像这样就连接成功了 向Mongodb数据库增加信息,首先需要写入表格信息 接着解构 ...

  10. 【JAVA习题二十八】海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

    package erase; import java.util.Scanner; public class 猴子分桃 { public static void main(String[] args) ...