Socket clientSocket = null; DataOutputStream os = null; DataInputStream is = null;
try { clientSocket = new Socket("localhost", 8888); os = new DataOutputStream(clientSocket.getOutputStream()); is = new DataInputStream(clientSocket.getInputStream()); } catch(Exception e) { e.printStackTrace(); }
服务器端只需一个用来接收数据的线程即可,用死循环,不断读取客户端发送的信息最好用ObjectInputStream和ObjectOutputStream,写一个类,把数据库中资料的字段写进类中,然后传对象,不过要记得,此类必须支持串行化,即implements java.io.Serializable
MyTestServer.java 服务器端运行后结果不正确,如果数据库中有两条记录,读完第一条后发送的时候有问题,服务器端好像接收不到MyTest.java
-------------------
import java.util.*;
import java.sql.*;
import java.io.*;
import java.net.*;public class MyTest
{
public static void main(String[] args)
{
try {
//load driver
Class.forName("org.gjt.mm.mysql.Driver");
} catch(Exception e) {
e.printStackTrace();
}
TimerTask tt = new TimerTask() {
public void run() {
//查询数据库
try {
//make a connection
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gb2312";
Connection con = DriverManager.getConnection(url,"root","");
//
Statement stmt = con.createStatement();
String query = "select * from e_units";
ResultSet rs = stmt.executeQuery(query);
while(rs.next())
{
String uname = rs.getString("unitname");
System.out.println(uname);
Socket clientSocket = null;
DataOutputStream os = null;
DataInputStream is = null;
try {
clientSocket = new Socket("localhost", 8888);
os = new DataOutputStream(clientSocket.getOutputStream());
is = new DataInputStream(clientSocket.getInputStream());
} catch(Exception e) {
e.printStackTrace();
}
try {
os.writeBytes(uname);
String responseLine;
while ((responseLine = is.readLine()) != null) {
System.out.println("from server : " + responseLine);
} os.close();
is.close();
clientSocket.close();
} catch(Exception e) {
e.printStackTrace();
}
} rs.close();
stmt.close();
con.close();
} catch(Exception e) {
e.printStackTrace();
}
}
};
final long loPeriod = 5000;
new Timer().scheduleAtFixedRate(tt, 0, loPeriod); }
}MyTestServer.java
----------------------
import java.io.*;
import java.net.*;public class MyTestServer {
public static void main(String args[]) { ServerSocket serverSocket = null;
Socket clientSocket = null;
DataInputStream is;
PrintStream os;
String s; try {
serverSocket = new ServerSocket(8888);
}
catch (IOException e) {
System.out.println(e);
} try {
clientSocket = serverSocket.accept();
is = new DataInputStream(clientSocket.getInputStream());
os = new PrintStream(clientSocket.getOutputStream()); while (true) {
System.out.println("**");
s = is.readLine();
System.out.println("from client : " + s);
os.println(s);
}
}
catch (IOException e) {
System.out.println(e);
}
}
}
try {
serverSocket = new ServerSocket(8888);
}
catch (IOException e) {
System.out.println(e);
} try {
clientSocket = serverSocket.accept();
reader = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream())); while (true) {
System.out.println("**");
s = reader.readLine();
System.out.println("from client : " + s);
}
}
catch (IOException e) {
e.printStackTrace();
}执行的结果:
不停打印 from client : null