socket:服务器接收到客户端传过来的数据,如何判断是需要做何操作的呢?

lqsmn613 2009-10-21 10:10:40
import java.io.*;
import java.net.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.applet.Applet;

public class Server {
public static void main(String args[]) {

ServerSocket server = null;
Socket socket = null;

try {
server = new ServerSocket(4700);
socket = server.accept();
String client_line = null;
BufferedReader br = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
client_line = br.readLine();
System.out.println("Client:" + client_line);

String server_line = null;
try {
DB1 db = new DB1();
ResultSet rst = db
.qu("select employeeid from t_acl_user where username = '"
+ client_line + "'");
while (rst.next()) {
server_line = rst.getString("employeeid");
}

rst.close();
db.closs();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
socket.getOutputStream()));
if(server_line == null){
bw.write("null\r\n\r\n");
bw.flush();
System.out.println("Server: null");
}else{
bw.write(server_line + "\r\n\r\n");
bw.flush();
System.out.println("Server:" + server_line);
}

socket.close(); // 关闭Socket
server.close(); // 关闭ServerSocket
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

class DB1 {
Connection con;

Statement stt;

public void begin() throws SQLException {
if (con != null || stt != null) {
this.closs();
}
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(
"jdbc:sqlserver://10.10.1.188:1433; DatabaseName=znoa",
"sa", "soft8099");
stt = con.createStatement();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

}

public ResultSet qu(String sql) throws SQLException {
this.begin();
return stt.executeQuery(sql);
}

public boolean cun(String sql) throws SQLException {
this.begin();
return stt.execute(sql);
}

public int update(String sql) throws SQLException {
this.begin();
return stt.executeUpdate(sql);
}

public void closs() throws SQLException {
stt.close();
con.close();
}

}

上面写的是socket通信中服务器端的代码,在运行的时候能取到客户端传来的数据,但是在查找数据库时,报错。如下:

这个DB类,我前面用过的,没有问题的啊。
不解???
...全文
316 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lqsmn613 2009-10-22
  • 打赏
  • 举报
回复
...不明白,楼上的,俺是新手,你这么一说,我很难知道应该怎么写的啊
dgqbcht 2009-10-22
  • 打赏
  • 举报
回复
可以直接发送对象过来 然后你判断下对象的class是啥 进行后续的操作就行了。
lqsmn613 2009-10-22
  • 打赏
  • 举报
回复
有人会的嘛???
来个人给个例子啊
lqsmn613 2009-10-22
  • 打赏
  • 举报
回复
解决了。
potahai 2009-10-21
  • 打赏
  • 举报
回复
客户端那边加一个字段,用来标记做什么操作。根据传输过来的字符串进行判断,我以前是那么去做的。 或者那边传过来的是方法名也可以。这个你可以随意调节。
lqsmn613 2009-10-21
  • 打赏
  • 举报
回复
新的问题,与标题一样。
就是在服务器接收到客户端传过来的数据之后,它应该是只是接收到一个单纯的字符串而已,
但是有时候,传过来的数据不同,在服务器上对数据库的操作也是不一样的,有的要保存,有的要修改,有的要查询所需的数据。。。这个如何去判断要使用的是哪个方法去操作数据库???
lqsmn613 2009-10-21
  • 打赏
  • 举报
回复
...找到原因了。
结啦!中午12点半结贴,有人就给分,没人就只有无人结贴啦!
lqsmn613 2009-10-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 potahai 的回复:]
客户端那边加一个字段,用来标记做什么操作。根据传输过来的字符串进行判断,我以前是那么去做的。 或者那边传过来的是方法名也可以。这个你可以随意调节。
[/Quote]
请问做标记怎么做?能举个小例子吗??
没写过,光看有点抽象了,呵呵
zhaoruifeng_good 2009-10-21
  • 打赏
  • 举报
回复



楼上说的可以

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧