📄 socketthread.java
字号:
/*
服务器返回信息协议:
250 命令操作成功完成
500 命令不可识别
551 非法ATM卡号
553 ATM卡被冻结
554 ATM卡已挂失
221 密码验证失败
886 服务器要求关闭连接
452 服务器已超出最大连接数
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.border.*;
import java.util.*;
import java.net.*;
import java.io.*;
public class SocketThread extends Thread
{
Socket Winsock;
DataInputStream inData;
DataOutputStream outData;
String getcmd;
Customer Guest = new Customer();
public SocketThread(Socket s)
{
Winsock=s;
try{
inData = new DataInputStream(Winsock.getInputStream());
outData = new DataOutputStream(Winsock.getOutputStream());
}
catch(IOException e)
{}
}
public void run()
{
while(true)
{
try
{
if((getcmd=new String(inData.readUTF()))!=null);
{
System.out.println("Received from Server:"+getcmd);
ProcessData(getcmd);
}
}
catch (IOException e)
{
System.out.println(e.toString());
break;
}
catch (Exception e)
{
System.out.println(e.toString());
break;
}
}
}
public void SendPick(double Cash) throws IOException
{
outData.writeUTF("PICK:|CARD:"+Guest.Card+"|CASH:"+Cash+"|PASS1"+Guest.Password);
}
public void SendQuary() throws IOException
{
outData.writeUTF("FLSH:|CARD:"+Guest.Card+"|PASS1"+Guest.Password);
}
public void SendTurn(String toCard,double Cash) throws IOException
{
outData.writeUTF("TURN:|CARD:"+Guest.Card+"|ACCT:"+toCard+"|CASH:"+Cash+"|PASS1"+Guest.Password);
}
public void SendPass(String newPassword) throws IOException
{
outData.writeUTF("PASS:|CARD:"+Guest.Card+"|PASS1"+Guest.Password+"|PASS2"+newPassword);
}
private void ProcessData(String command)
{
StringTokenizer st=new StringTokenizer(command,"|");
String[] tokens=new String[st.countTokens()];
int i=0;
String Card = "";
String Name="";
String Pass ="";
String Acct="";
double Cash=0;
boolean LostFlag=false;
boolean State=false;
while(st.hasMoreTokens())
{
tokens[i]=st.nextToken();
if(tokens[i].trim().substring(0,5).toUpperCase().equals("CARD:"))
Card = new String(tokens[i].trim().substring(5));
if(tokens[i].trim().substring(0,5).toUpperCase().equals("CASH:"))
Cash = Double.parseDouble(tokens[i].trim().substring(5));
if(tokens[i].trim().substring(0,5).toUpperCase().equals("ACCT:"))
Acct = new String(tokens[i].trim().substring(5));
if(tokens[i].trim().substring(0,5).toUpperCase().equals("PASS:"))
Pass = new String(tokens[i].trim().substring(5));
if(tokens[i].trim().substring(0,5).toUpperCase().equals("STAT:"))
State = tokens[i].trim().substring(5).equals("FALSE")?false:true;
if(tokens[i].trim().substring(0,5).toUpperCase().equals("SIGN:"))
LostFlag = tokens[i].trim().substring(5).equals("FALSE")?false:true;
i++;
}
switch (Integer.parseInt(command.trim().substring(0,3)))
{
case 110:
Guest.Card= Card;
Guest.Name=Name;
Guest.Password=Pass;
Guest.Money=Cash;
Guest.LostFlag=LostFlag;
Guest.State=State;
break;
case 250:
case 500:
case 551:
case 553:
case 554:
case 221:
case 886:
case 452:
}
}
/*
服务器返回信息协议
110 ATM客户信息数据包
250 命令操作成功完成
500 命令不可识别
551 非法ATM卡号
553 ATM卡被冻结
554 ATM卡已挂失
221 密码验证失败
886 服务器要求关闭连接
452 服务器已超出最大连接数
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -