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

来源:互联网 发布:unity3d小游戏制作视频 编辑:程序博客网 时间:2024/05/20 22:02

这次找到了失败的问题。

1.String bx[]=str_c.split("\\|"); 然后再box=bx;成功了

      失败的方法是string box[],这里就相当于在外部和方法中都定义了String box[],这样方法内的box就变成类内部变量,而且不用string 直接box[]=str_c("\\|");报错,不能这样用。


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;
static String box[];
public ToClientOP(){}
public ToClientOP(Socket a){                 //构造函数,为了传递参数登录server的客户端socket
this.socket01=a;
}

//线程主体
public void run() {                           //线程主体,用来处理客户端的一切操作
this.rec_s(socket01);
int i_tag = Integer.parseInt(box[0]);
this.match(i_tag);//使用match方法类来对客户端的请求进行比对,是登录login?还是销售sale? ,tag是string类型。需要用interger把他变成int类型
}


   //接收客户端的字符串
public void 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 bx[]=str_c.split("\\|"); //直接给box[]是不是不好使,报错
box=bx;                         //字符串数组赋值,不是box[]=bx[] 
}

//数据库连接
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 = box[1];
String pass = box[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();                                //执行线程主体
}
}

}
0 0
原创粉丝点击