| 查看: 475 | 回复: 0 | |||
[交流]
聊天
|
|
package cn.javaqq; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.List; public class ServerFrame { private final static int PORT = 8888; private static boolean bconnected = false; private static ServerSocket socket = null; private static DataOutputStream output = null; static List<ClientThread> cl=new ArrayList<ClientThread>(); public static void main(String[] args) { new ServerFrame().startServer(); } public void startServer() { ClientThread ct=null; try { socket = new ServerSocket(PORT); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } while (true) { Socket so = null; try { so = socket.accept(); ct = new ClientThread(so); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } cl.add(ct); Thread th=new Thread(ct); th.start(); } } class ClientThread implements Runnable { private DataInputStream input = null; private DataOutputStream output=null; private Socket s = null; private boolean bconnected = false; public void send(String str1){ try { output.writeUTF(str1); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public void run() { // TODO Auto-generated method stub bconnected = true; while (bconnected) { String str = null; // 读 try { str = input.readUTF(); for(int i=0;i<cl.size();i++){ cl.get(i).send(str); } } catch (Exception e) { // TODO Auto-generated catch block // e.printStackTrace(); try { s.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { input.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } // System.out.println("出现错误!" ;} System.out.println(str); // 写 // output.writeUTF(s1); // output.flush(); } } public ClientThread(Socket soc) { s = soc; // 读从客户端发过来的数据流 try { input = new DataInputStream(s.getInputStream()); output=new DataOutputStream(s.getOutputStream()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ package cn.javaqq; import java.awt.BorderLayout; import java.awt.Button; import java.awt.Frame; import java.awt.Panel; import java.awt.TextArea; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; public class ClientFrame extends Frame { boolean clientread = false; static Socket client = null; // static TextArea area=null; static DataOutputStream output = null; TextField text = new TextField(); Panel p = new Panel(); TextArea area = new TextArea(); TextArea area1 = new TextArea(); Button btn1 = new Button("Connect" ;Button btn2 = new Button("Disconnect" ;public static void main(String[] args) { // TODO Auto-generated method stub new ClientFrame().frameDemo(); } public void frameDemo() { BorderLayout border = new BorderLayout(); BorderLayout border1 = new BorderLayout(); p.setLayout(border1); p.add(area, border.NORTH); p.add(area1, border.SOUTH); setLayout(border); this.add(p, border.NORTH); // add(area, border.NORTH); add(text, border.SOUTH); add(btn1, border.WEST); add(btn2, border.EAST); this.setLocation(300, 200); this.setSize(300, 400); pack(); text.addActionListener(new TFListener()); btn1.addActionListener(new BTListener()); btn2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { ClientFrame.disConnected(); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } }); this.setVisible(true); this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } public void connected() { try { // ServerFrame.startServer(); client = new Socket("LocalHost", 8888); System.out.println("connected!" ;// clientread=true; } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void disConnected() throws Exception { // ServerFrame.disConnectedServer(); output.close(); client.close(); } private class TFListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub String s = text.getText(); try { output = new DataOutputStream(client.getOutputStream()); output.writeUTF(s); output.flush(); try { ServerThread serverthread = new ServerThread(client); new Thread(serverthread).start(); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } // output.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (NullPointerException e2) { System.out.println("您还没有连接!" ;} area.setText(s); text.setText("" ;} } private class BTListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub new ClientFrame().connected(); } } class ServerThread implements Runnable { Socket serversocket; DataInputStream clientinput = null; boolean start = false; String clientstring = null; @Override public void run() { // TODO Auto-generated method stub start = true; while (start) { try { clientinput = new DataInputStream(client.getInputStream()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { clientstring = clientinput.readUTF(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } area1.setText("收到服务器端发来数据:" + clientstring); } } public ServerThread(Socket s) throws Exception { serversocket = s; clientinput = new DataInputStream(serversocket.getInputStream()); } } } |
» 猜你喜欢
三甲基碘化亚砜的氧化反应
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有5人回复
孩子确诊有中度注意力缺陷
已经有12人回复
2025冷门绝学什么时候出结果
已经有3人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复
论文投稿,期刊推荐
已经有4人回复
硕士和导师闹得不愉快
已经有13人回复














;
回复此楼