public class QQServer {
public static void main(String args[]){
try{
//服务器在8000端口监听(1)
ServerSocket ss = new ServerSocket(8000);
while(true){
System.out.println("服务器正在8000端口监听……");
Socket s = ss.accept();
MyService t=new MyService();
t.setSocket(s);
t.start();
}
}catch(Exception e){}
}
}
class MyService extends Thread{
private Socket s;
public void setSocket(Socket s){
this.s=s;
}
public void run(){
try{
//等待接收客户端发送过来的用户名和密码(2)
InputStream is = s.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String uandp = br.readLine();
if(e.getActionCommand().equals("登录")){
try {
//将用户名和密码发送到服务器(3)
String user = txtUser.getText();
String pass = txtPass.getText();
Socket s = new Socket("127.0.0.1",8000);
OutputStream os = s.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
PrintWriter pw = new PrintWriter(osw,true);
pw.println(user+"%"+pass);
//拆分用户名和密码(4)
String u = uandp.split("%")[0];
String p = uandp.split("%")[1];
//验证(5)
File sqlFile = new File("e:/qq/sql.txt") ;
FileReader fr = new FileReader(sqlFile) ;
BufferedReader sqlBr = new BufferedReader(fr) ;
boolean b = false ;
while(sqlBr.ready()){
String data = sqlBr.readLine() ;
if(u.equals(data.split("%")[0])&&p.equals(data.split("%")[1])){
b = true ;
break ;
}
}
//接受服务器发送回来的确认信息(6)
InputStream is = s.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String yorn = br.readLine();
//发送确认信息到客户端(7)
OutputStream os = s.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
PrintWriter pw = new PrintWriter(osw,true);
if(b){
pw.println("ok") ;
//接受客户端发送过来的信息(9)
while(true){
String message = br.readLine() ;
System.out.println(message) ;
}
}else {
pw.println("err") ;
}
//弹出主窗体(8)
if(yorn.equals("ok")){
this.setVisible(false);
QQMain qq= new QQMain();
qq.setSocket(s);
qq.setVisible(true);
this.setVisible(false);
}
private Socket s;
public void setSocket(Socket s){
this.s=s;
}
if(e.getActionCommand().equals("发送")){
if(tt.getText().equals("")){
JOptionPane.showMessageDialog(null, "消息不能为空!");
return;
}else{
//tt----------<<CC
cc.append("我对"+jcbName.getSelectedItem().toString()+"说:"+tt.getText()+"\n");
String msg = cc.getText();
try{
//tt---------<<聊天记录
File outf = new File("e:/xy/聊天记录.wy");
FileWriter fw = new FileWriter(outf);
PrintWriter pw = new PrintWriter(fw,true);
pw.println(msg);
}catch(Exception ex){
ex.printStackTrace();
}
//tt---------------<<服务器
try{
OutputStream os=s.getOutputStream();
OutputStreamWriter osw=new OutputStreamWriter(os);
PrintWriter pw=new PrintWriter(osw,true);
pw.println(msg);
public static void main(String args[]){
try{
//服务器在8000端口监听(1)
ServerSocket ss = new ServerSocket(8000);
while(true){
System.out.println("服务器正在8000端口监听……");
Socket s = ss.accept();
MyService t=new MyService();
t.setSocket(s);
t.start();
}
}catch(Exception e){}
}
}
class MyService extends Thread{
private Socket s;
public void setSocket(Socket s){
this.s=s;
}
public void run(){
try{
//等待接收客户端发送过来的用户名和密码(2)
InputStream is = s.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String uandp = br.readLine();
if(e.getActionCommand().equals("登录")){
try {
//将用户名和密码发送到服务器(3)
String user = txtUser.getText();
String pass = txtPass.getText();
Socket s = new Socket("127.0.0.1",8000);
OutputStream os = s.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
PrintWriter pw = new PrintWriter(osw,true);
pw.println(user+"%"+pass);
//拆分用户名和密码(4)
String u = uandp.split("%")[0];
String p = uandp.split("%")[1];
//验证(5)
File sqlFile = new File("e:/qq/sql.txt") ;
FileReader fr = new FileReader(sqlFile) ;
BufferedReader sqlBr = new BufferedReader(fr) ;
boolean b = false ;
while(sqlBr.ready()){
String data = sqlBr.readLine() ;
if(u.equals(data.split("%")[0])&&p.equals(data.split("%")[1])){
b = true ;
break ;
}
}
//接受服务器发送回来的确认信息(6)
InputStream is = s.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String yorn = br.readLine();
//发送确认信息到客户端(7)
OutputStream os = s.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
PrintWriter pw = new PrintWriter(osw,true);
if(b){
pw.println("ok") ;
//接受客户端发送过来的信息(9)
while(true){
String message = br.readLine() ;
System.out.println(message) ;
}
}else {
pw.println("err") ;
}
//弹出主窗体(8)
if(yorn.equals("ok")){
this.setVisible(false);
QQMain qq= new QQMain();
qq.setSocket(s);
qq.setVisible(true);
this.setVisible(false);
}
private Socket s;
public void setSocket(Socket s){
this.s=s;
}
if(e.getActionCommand().equals("发送")){
if(tt.getText().equals("")){
JOptionPane.showMessageDialog(null, "消息不能为空!");
return;
}else{
//tt----------<<CC
cc.append("我对"+jcbName.getSelectedItem().toString()+"说:"+tt.getText()+"\n");
String msg = cc.getText();
try{
//tt---------<<聊天记录
File outf = new File("e:/xy/聊天记录.wy");
FileWriter fw = new FileWriter(outf);
PrintWriter pw = new PrintWriter(fw,true);
pw.println(msg);
}catch(Exception ex){
ex.printStackTrace();
}
//tt---------------<<服务器
try{
OutputStream os=s.getOutputStream();
OutputStreamWriter osw=new OutputStreamWriter(os);
PrintWriter pw=new PrintWriter(osw,true);
pw.println(msg);