主要是match函数中的box[],赋值给name或pass成功。
为什么rec_s 方法中已将字符串分割后给了box,但是除了rec_s方法box[1],box[2]就是没有值,没办法,想到了让rec_s返回整个box数组,但是仍然不好使。调试中
package db;
import java.io.*;
import java.net.*;
import java.sql.*;
import javax.swing.JOptionPane;
import tcp.ThreadServer.Soin;
import tcp.ThreadServer.Syin;
import java.sql.*;
public class server {
static int portNO = 8886;
static ServerSocket server = null;
public static Socket socket = null;
static String str_c = null;
public static BufferedReader is;
public static PrintWriter os;
//服务器建立
public void serverCreate(){
try{
server = new ServerSocket(portNO); //开启socketserver服务
System.out.println("success");
}catch (Exception e5)
{
e5.printStackTrace();
}
}
//线程类
public static class ToClientOP extends Thread {
ResultSet rs;
Statement sql;
Connection con;
Socket socket01;
String box[];
public ToClientOP(){}
public ToClientOP(Socket a){ //构造函数,为了传递参数登录server的客户端socket
this.socket01=a;
}
//线程主体
public void run() { //线程主体,用来处理客户端的一切操作
String tag = this.rec_s(socket01)[0];// 这里做了一个实验看看,主类重的rec_s的方法能否返回一个数组,证明可以的。
int i_tag = Integer.parseInt(tag);
System.out.println(tag);///
this.match(i_tag); //使用match方法类来对客户端的请求进行比对,是登录login?还是销售sale? ,tag是string类型。需要用interger把他变成int类型
System.out.println("1111111");///
}
//接收客户端的字符串
public String[] rec_s(Socket a){
Socket socketx = a;
try{
is=new BufferedReader(new InputStreamReader(socketx.getInputStream()));
os=new PrintWriter(socketx.getOutputStream());
str_c = is.readLine();
}catch (Exception e4)
{
e4.printStackTrace();
}
System.out.println(str_c);
String box[]=str_c.split("\\|");
//int marker = Integer.parseInt(box[0]);
return box;
}
//数据库连接
public void connect(){
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/dbtest";
con = DriverManager.getConnection(url, "root","123456");
sql = con.createStatement();
}catch (Exception e1)
{
e1.printStackTrace();
}
}
//比对标记
public void match(int a){
int m_tag=a;
switch(m_tag)
{
case 1001:{
this.connect();
System.out.println("2222");
String name = this.rec_s(socket01)[1];
String pass = this.rec_s(socket01)[2];
System.out.println(name);
System.out.println(pass);
try{
rs = sql.executeQuery("Select * From user");
while (rs.next()){
String name1 = rs.getString("name");
String pass1 = rs.getString("pass");
System.out.println(name1);
if((name1.equals(name))&&(pass1.equals(pass))){
os.println("1001|123");
os.flush();
con.close();
}
}
}catch (Exception e2)
{
e2.printStackTrace();
}
os.println("1001|false");
os.flush();
System.out.println("22222222222");
break; //如果不用会直接去执行case1002
}//case
case 3001:{
}
}//switch
}
}
//主方法
public static void main(String[] args) {
new server().serverCreate(); //建立socketserver
while(true){
try{
socket = server.accept(); //阻塞、侦听。
}catch (Exception e6)
{
e6.printStackTrace();
}
ToClientOP tco = new ToClientOP(socket); //实例化线程类,(有构造函数)
tco.start(); //执行线程主体
}
}
}
//
//
// while(true){
// socket = server.accept();
// String str_c = null;
// BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
// PrintWriter os=new PrintWriter(socket.getOutputStream());
//
// str_c = is.readLine();
//
// System.out.println(str_c);
// String box[]=str_c.split("\\|");
// //System.out.println(box[0]+" "+box[1]+" "+box[2]);
// int marker = Integer.parseInt(box[0]);
// switch(marker)
// {
// case 1001:{
// Connection con;
// Statement sql;
// ResultSet rs;
// String name = box[1];
// String pass = box[2];
// try {
// Class.forName("com.mysql.jdbc.Driver");
// } catch (ClassNotFoundException e3) {
// e3.printStackTrace();
// }
// try {
// String url = "jdbc:mysql://localhost:3306/dbtest";
// con = DriverManager.getConnection(url, "root","123456");
// sql = con.createStatement();
// rs = sql.executeQuery("Select * From user");
// while (rs.next()){
// String name1 = rs.getString("name");
// String pass1 = rs.getString("pass");
// System.out.println(name1);
// if((name1.equals(name))&&(pass1.equals(pass))){
// os.println("1001|123");
// os.flush();
// con.close();
// }
// }
// os.println("1001|false");
// os.flush();
// System.out.println("22222222222");
//
//
// break; //如果不用会直接去执行case1002
// }//case
//
// case 3001:{
//
// }
//
// }//switch
//
// }//while
//
// }//main
//}//server
//
//
//
//
//
//public void run() {
//int tag = new server().rec_s(socket01);
//System.out.println(tag);///
//new server().match(tag);
//new server().rec_s(socket01);
//System.out.println("abcasdfasdfcvdsafed");
//String b0 = new server().box[0];
//String b1 = new server().box[1];
//String b2 = new server().box[2];
//System.out.println(new server().box[0]+"recrecrec");
//
//}
//失败
//public void rec_s(Socket a){
// try{
// is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
// os=new PrintWriter(socket.getOutputStream());
// str_c = is.readLine();
// }catch (Exception e4)
// {
// e4.printStackTrace();
// }
// System.out.println(str_c);
// String box[]=str_c.split("\\|");
//}