您的位置:首页 > 其它

在线聊天小系统

2014-08-13 20:24 218 查看
服务端:import java.io.*;import java.net.*;import java.util.*;;public class ChatServer {boolean started = false;ServerSocket ss = null;List clients = new ArrayList();public static void main(String[] args) {new ChatServer().start();}public void start(){try {ss =
new ServerSocket(8888);} catch (BindException e) {System.out.println("端口使用中....");System.out.println("请关闭运行中的程序并重新启动");System.exit(0);} catch (IOException e) {e.printStackTrace();}try {started = true;while (started) {Socket s = ss.accept();Client c = new Client(s);System.out.println("a
client connected!");new Thread(c).start();clients.add(c);// dis.close();}} catch (IOException e) {e.printStackTrace();} finally {try {ss.close();} catch (IOException e1) {e1.printStackTrace();}}}class Client implements Runnable{private Socket s;private DataInputStream
dis = null;private DataOutputStream dos = null;private boolean bConnected = false;public Client(Socket s){this.s = s;try {dis = new DataInputStream(s.getInputStream());dos = new DataOutputStream(s.getOutputStream());bConnected = true;}catch (IOException e)
{e.printStackTrace();}}public void send(String str) {try {dos.writeUTF(str);} catch (IOException e) {clients.remove(this);System.out.println("对方退出了,我从list里面去掉了!");// e.printStackTrace();}}public void run() {// Client c = null;try{while(bConnected){String str
= dis.readUTF();System.out.println(str);for(int i = 0;i < clients.size();i++){Client c = clients.get(i);c.send(str);}//iterator会自动锁定/*for(Iterator it = clients.iterator();it.hasNext();){Client c = it.next();c.send(str);}Iterator it = clients.iterator();while(it.hasNext()){Client
c = it.next();c.send(str);}*/}} catch(SocketException e){// if(c != null) clients.remove(c);//将其从list列表中移除System.out.println("a client quit,bye");}catch(EOFException e){System.out.println("Client closed!");} catch (IOException e) {// TODO Auto-generated catch
blocke.printStackTrace();}finally {try {if (dis != null)dis.close();if(dos != null)dos.close();if (s != null)s.close();} catch (IOException e1) {e1.printStackTrace();}}}}}客户端:import java.awt.*;import java.awt.event.*;import java.io.*;import java.net.*;public
class ChatClient extends Frame {TextField tfTxt = new TextField();// TextArea taContent = new TextArea();// Socket s = null;DataOutputStream dos = null;DataInputStream dis = null;private boolean bconnected = false;public static void main(String[] args) {new
ChatClient().launchFrame();}public void launchFrame() {setLocation(400, 300);this.setSize(300, 300);add(tfTxt, BorderLayout.SOUTH);add(taContent, BorderLayout.NORTH);pack();// this.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent
e) {disconnect();System.exit(0);}});tfTxt.addActionListener(new TFListener());setVisible(true);connect();new Thread(new RecvThread()).start();}public void connect(){try { s = new Socket("127.0.0.1",8888); dos = new DataOutputStream(s.getOutputStream()); dis
= new DataInputStream(s.getInputStream()); bconnected = true;System.out.println("connected!");} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}public void disconnect(){try{dos.close();s.close();}catch (IOException
e){e.printStackTrace();}}private class TFListener implements ActionListener{public void actionPerformed(ActionEvent e) {String str = tfTxt.getText().trim();// taContent.setText(str);tfTxt.setText(""); try {//System.out.println(s);dos = new DataOutputStream(s.getOutputStream());dos.writeUTF(str);dos.flush();//
dos.close();} catch (IOException e1) {e1.printStackTrace();}}}public class RecvThread implements Runnable{public void run(){try{while(bconnected){String str = dis.readUTF();// System.out.println(str);taContent.setText(taContent.getText() + str +'\n');}}catch(SocketException
e){// if(c != null) clients.remove(c);//将其从list列表中移除System.out.println("退出了,bye");}catch(EOFException e){System.out.println("Client closed!");} catch(IOException e){e.printStackTrace();}}}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: