关闭

Java socket与JDBC的共用

标签: socketjavajdbcmysql服务器
733人阅读 评论(0) 收藏 举报
分类:

做了一个下午,终于把客户端的数据通过socket发送到了服务器,然后通过JDBC存进了我的mysql数据库。废话不多说,直接说过程。

代码如下:

客户端代码(仅作测试用):

package com.wl2014.client;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.SocketTimeoutException;

public class Client {
	public static void main(String[] args) throws IOException {
		Socket client = new Socket("127.0.0.1", 20006);
		client.setSoTimeout(10000);
		BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
		PrintStream out = new PrintStream(client.getOutputStream()); 
		BufferedReader buf =  new BufferedReader(new InputStreamReader(client.getInputStream()));
		boolean flag = true;
		while(flag){
			System.out.print("输入信息:");
			String str = input.readLine();
			out.println(str);
			if("bye".equals(str)){
				flag = false;
			}else{
				try{
					String echo = buf.readLine();
					System.out.println(echo);
				}catch(SocketTimeoutException e){
					System.out.println("Time out, No response");
				}
			}
		}
		input.close();
		if(client != null){
			client.close();
		}
	}
}
服务器端(多线程):
package com.wl2014.server;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;


public class ServerThread implements Runnable {

	private Socket client = null;
	public ServerThread(Socket client){
		this.client = client;
	}

	@Override
	public void run() {
		try{
			PrintStream out = new PrintStream(client.getOutputStream());
			BufferedReader buf = new BufferedReader(new InputStreamReader(client.getInputStream()));
			boolean flag =true;
			while(flag){
				String str =  buf.readLine();
				if(str == null || "".equals(str)){
					flag = false;
				}else{
					if("bye".equals(str)){
						flag = false;
					}else{
						out.println("echo:" + str);
					}
				}
			}
			out.close();
			client.close();
		}catch(Exception e){
			e.printStackTrace();
		}
	}

}
服务器端处理TCP请求:
package com.wl2014.server;

import java.net.ServerSocket;
import java.net.Socket;

public class Server1 {
	public static void main(String[] args) throws Exception{
		ServerSocket server = new ServerSocket(20006);
		Socket client = null;
		boolean f = true;
		while(f){
			client = server.accept();
			System.out.println("连接成功!");
			new Thread(new ServerThread(client)).start();
		}
		server.close();
	}
}
然后结合http://www.cnblogs.com/Neilling/p/4024558.html,这是java操作数据库的比较好的代码,可以结合一下,将其中的代码加到服务器端的代码中。测试一下,如果显示出你想要的东西,将服务端的代码生成一个jar包,直接让他在服务端运行就可以了。socket会始终监听你指定的端口。接着JDBC执行你的sql语句。

1
0
查看评论

java Socket完美实例

1.TCP/IP协议要求信息必须在块(chunk)中发送和接收,而块的长度必须是8位的倍数,因此,我们可以认为TCP/IP协议中传输的信息是字节序列。如何发送和解析信息需要一定的应用程序协议。 2.信息编码:     首先是Java里对基本整型的处理,发送时,要注意...
  • Baple
  • Baple
  • 2013-09-24 22:16
  • 7093

Java中通过TCP协议发送和接收数据-Socket编程

TCP TCP协议是面向连接、保证高可靠性(数据无丢失、数据无失序、数据无错误、数据无重复到达)传输层协议。 TCP通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。 Socket     Socket可以说是一种针对网...
  • kris234seth
  • kris234seth
  • 2016-02-18 15:14
  • 12447

JDBC 中 socketTimeout 的作用

如果我们把socketTimeout设置如下:socketTimeout=60000;这意味着60秒以服务器必须给客户端至少返回一些数据,以保持socket的活性。一般查询都不会有问题,即使是全表扫描这样的大查询,因为数据会流式地源源不断吐给客户端。但对于带有ORDER BY、DISTINCT、CO...
  • maray
  • maray
  • 2016-08-05 11:09
  • 1747

窗口传值方法(socket多窗口共用)

在一次项目中需要用到socket通信,而且是串口服务器中使用,也就是说本质还是串口通信,只是我们在代码中完全作为socket通信来编写。切入正题,由于要在两个页面中都去访问同一个串口服务器的端口,而且还会再次返回第一个窗口(主窗口),因此socket的使用就要特别小心,本来是想分别在自己窗口new一...
  • yangdayededaye
  • yangdayededaye
  • 2015-10-30 09:08
  • 1139

JDBC数据类型与Java数据类型对应关系

SQL JDBC/JAVA setter getter VARCHAR java.lang.String setString getString CHAR java.lang.String setString getString LONGVARCHAR ...
  • GongchuangSu
  • GongchuangSu
  • 2016-07-19 15:51
  • 1244

java-基本的Socket编程-实现服务器端和客户端通信

基本的Socket编程: 本实例介绍Socket编程的基本步骤。启动Socket服务后,再打开Socket刻画段,在输入框中输入消息,然后发送给服务器端,服务器端将收到的消息返回到客户端。关键技术: Socket编程的关键技术如下; —–Socket服务器端需要在某个端口上开启服务端类型的So...
  • zlz18225318697
  • zlz18225318697
  • 2016-10-12 17:48
  • 2859

多个Activity之间共用一个Socket实例

多个活动共用socket实例的三种方法。单列模式(静态socket变量);application实体类;socket封装在service中
  • lhp15575865420
  • lhp15575865420
  • 2017-07-14 20:54
  • 683

多个activity共享一个socket,保持socket的长连接

如何多个 Acitvity 共用一个Socket?
  • JeffreyLau7
  • JeffreyLau7
  • 2016-12-14 14:43
  • 882

Spring对JDBC的DAO支持

    Spring提供JdbcDaoSupport来实现对JDBC的DAO支持。在JdbcDaoSupport类中提供了两个方法,分别是:        void setData...
  • cgwshxs
  • cgwshxs
  • 2008-12-06 16:55
  • 3060

java jdbc 查询与更新实现

package jdbc.demo;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java...
  • diwangerdai
  • diwangerdai
  • 2017-05-29 11:34
  • 415
    个人资料
    • 访问:136534次
    • 积分:1366
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:1篇
    • 译文:0篇
    • 评论:5条
    最新评论