java做的聊天工具

最终要求:

1.添加好友
2.与在线好友聊天
3.登录后可以显示与选中好友的聊天记录


解决方案:在数据库里建个表,然后储存 发信息者,收信息者,信息。

未完成:


用户端代码:

package qqmyclient;

//客户端代码
//1

import java.sql.*;
import java.io.*;
import java.net.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

class SS
{
public static void main(String[]args)
{
	new QQLogin();
}
}
class QQLogin 
{
JLabel jl=new JLabel("用户名");
JLabel jl2=new JLabel("密码");
JTextField tf=new JTextField();
JPasswordField pf=new JPasswordField();
JButton jb=new JButton("登录");
JButton jb2=new JButton("注册");
JButton jb3=new JButton("取消");

JPanel up=new JPanel();
JPanel down=new JPanel();
JFrame jf=new JFrame();
Socket s=null;
public QQLogin()
{
	up.setLayout(new GridLayout(2,2));
	up.add(jl);
	up.add(tf);
	up.add(jl2);
	up.add(pf);
	down.setLayout(new FlowLayout());
	down.add(jb);
	down.add(jb2);
	down.add(jb3);
	
	jf.setSize(215, 125);
	jf.setLayout(new BorderLayout());
	jf.add(up,BorderLayout.NORTH);
	jf.add(down, BorderLayout.SOUTH);
	jf.setVisible(true);
	try{
	s=new Socket("10.36.12.121",8000);
	jb.addActionListener(
			new ActionListener()
			{
				@Override
				public void actionPerformed(ActionEvent ae)
				{		
	try{
					String st=tf.getText();
					String pass=new String(pf.getPassword());
					
					OutputStream os=s.getOutputStream();
					OutputStreamWriter sw=new OutputStreamWriter(os);
					PrintWriter pw=new PrintWriter(sw,true);
					pw.println(st+"%"+pass);
					
					InputStream is=s.getInputStream();
					InputStreamReader sr=new InputStreamReader(is);
					BufferedReader br=new BufferedReader(sr);
					
					if(pass.equals(""))
					{
						JOptionPane.showMessageDialog(jf,"密码为空");
					}
					else  if(br.readLine().equals("true"))
					{
						jf.setVisible(false);
						QQMain qq=new QQMain();
						qq.setSocket(s,st);
					}
					else
					{
						JOptionPane.showMessageDialog(jf, "用户名或密码错误");
					}
					 
	}catch(Exception ex){
		System.out.println(ex.getMessage());
	}	
				
				}
			}
			);
	}catch(Exception ex){
		System.out.println(ex.getMessage());
	}
}
}
class QQMain
{
JTextField tf=new JTextField();

JButton jb=new JButton("发送消息给:");
TextField tf1=new TextField();
JTextArea ta=new JTextArea();
JScrollPane sp=new JScrollPane(ta);

JPanel small=new JPanel();
JPanel big=new JPanel();
JFrame jf=new JFrame();
private Socket s;
String name=null;
public void setSocket(Socket w,String n)
{
	s=w;
	name=n;
}

public QQMain()
{
	small.setLayout(new GridLayout(1,2));
	small.add(jb);
	small.add(tf1);
	big.setLayout(new GridLayout(2,1));
	big.add(tf);
	big.add(small);
	jf.setLayout(new BorderLayout());
	jf.add(big,BorderLayout.NORTH);
	jf.add(sp, BorderLayout.CENTER);
	jf.setSize(300, 400);
	jf.setVisible(true);
	
	jb.addActionListener(
			new ActionListener()
			{
				@Override
				public void actionPerformed(ActionEvent ae)
				{
					if(tf.getText().equals(""))
					{
						JOptionPane.showMessageDialog(jf, "请输入接收者");
					}
					else
					{
					try{
						OutputStream os=s.getOutputStream();
	                    OutputStreamWriter sw=new OutputStreamWriter(os);
                     	PrintWriter pw=new PrintWriter(sw,true);
						
						pw.println(name+'%'+tf1.getText()+'%'+tf.getText());
						ta.append(name+" 说: "+tf.getText()+"\r\n");
						
						tf.setText("");
						
					}catch(Exception ex){
						System.out.println(ex.getMessage());
					}
					}
				}
			}
			);
}
}


服务器端代码:

package mypro01;

import java.net.*;
import java.io.*;
import java.sql.*;

class qqServer
{
	public static void main(String[]args)
	{
		try
		{	
		ServerSocket ss=new ServerSocket(8000);
		while(true)
		{
			Socket s=ss.accept();
			MyClient my=new MyClient(s);
			my.start();
		}
		}catch(Exception ex){
			
		}
	}
}
class MyClient extends Thread
{
	private Socket s;
	public MyClient(Socket w)
	{
		s=w;
	}
	public void run()
	{
		try{
		while(true)
		{
		InputStream is=s.getInputStream();
		InputStreamReader sr=new InputStreamReader(is);
		BufferedReader br=new BufferedReader(sr);

		OutputStream os=s.getOutputStream();
		OutputStreamWriter sw=new OutputStreamWriter(os);
		PrintWriter pw=new PrintWriter(sw,true);
		String st=br.readLine();	
		String name="";
		String pass="";

		int pos=0;
		for(pos=0;;pos++)
		{
			if(st.charAt(pos)=='%')
				break;
		}
		for(int i=0;i<st.length();++i)
		{
			if(i<pos)
				name=name+st.charAt(i);
			if(i>pos)
				pass=pass+st.charAt(i);
		}
		if(pass.equals(""))
			pw.println("empty");
		else
			{
		try{
			String password="fpy/.123698741";
			Class.forName("org.gjt.mm.mysql.Driver");
			Connection cn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/qq","root",password);
			Statement sta=cn.createStatement();
			name="'"+name+"'";
			pass="'"+pass+"'";
			ResultSet rs=sta.executeQuery("select * from user where username = "+name+" and password= "+pass+";");
				if(rs.next())
				{
					pw.println("true");
					InputStream is2=s.getInputStream();	
					InputStreamReader sr2=new InputStreamReader(is2);
					BufferedReader br2=new BufferedReader(sr2);
					String stri=br2.readLine();
					String sender="'"+stri.split("%")[0]+"'";
					String receiver="'"+stri.split("%")[1]+"'";
					String infor="'"+stri.split("%")[2]+"'";
					sta.execute("insert recorder values(sender,receiver,information)"+sender+","+receiver+","+infor+";");
				}
				else
				{
					pw.println("false");
				}
			}catch(Exception ex){}
				
			}
		}
		}catch(Exception ex){}
	}
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值