步骤:
创建数据库,并创建表。
利用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. Spring Boot入门系列(十四)使用JdbcTemplate操作数据库,配置多数据源!

    前面介绍了Spring Boot 中的整合Mybatis并实现增删改查.如何实现事物控制.不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/c ...

  2. Protocol Buffers工作原理

    这里记录一下学习与使用Protocol Buffer的笔记,优点缺点如何使用这里不再叙述,重点关注与理解Protocol Buffers的工作原理,其大概实现. 我们经常使用Protocol Buff ...

  3. Java实现 洛谷 P6183 [USACO10MAR]The Rock Game S(DFS)

    P6183 [USACO10MAR]The Rock Game S 输入输出样例 输入 3 输出 OOO OXO OXX OOX XOX XXX XXO XOO OOO PS: 因为每一位只有两种可能 ...

  4. Java实现 蓝桥杯VIP 算法训练 猴子分苹果

    问题描述 秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分.这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果.第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一 ...

  5. 涨见识了,在终端执行 Python 代码的 6 种方式!

    原作:BRETT CANNON 译者:豌豆花下猫@Python猫 英文:https://snarky.ca/the-many-ways-to-pass-code-to-python-from-the- ...

  6. KMP 知识点整理

    1.扩展KMP 2.最大表示法 3.最小表示法 (扩展KMP) hdu2594  模板题 #include <iostream> #include <cstdio> #incl ...

  7. 实验五shell脚本编程

    项目 内容 这个作业属于哪个课程 <班级课程的主页链接> 这个作业的要求在哪里 作业要求链接地址 学号-姓名 17043220-万文文 作业学习目标 1)了解shell脚本的概念及使用.2 ...

  8. Python--函数&过程

    函数式编程与过程式编程打的区分:过程是没有返回值的函数,过程在python3中也有返回值,为None 函数的作用:代码复用.保持代码的一致性.使代码更容易扩展 过程的定义与调用: 1 def func ...

  9. webstorm 快捷键 失效问题

    解决方案一:  file->Settings->Keymap->设置为Default 解决方案二:  file->Settings->IdeaVim->取消对勾 重 ...

  10. idea出现 淇℃伅 乱码

    问题:我是idea出现 淇℃伅 乱码, 解决:修改 tomcat 下的 logging.properties这个文件 为 GBK 就好了. 参考:https://blog.csdn.net/weixi ...