Java_socket程序学习0501-彩票销售-第一阶段server端整理-失败

主要是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("\\|");
//}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值