자바 채 팅 방 구현 코드

9058 단어 자바채 팅 방
본 논문 의 사례 는 자바 가 채 팅 방 을 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
채 팅 방 인터페이스:

원본 코드:

public class ClientFrame extends Frame {

 private TextField textFieldContent = new TextField();
 private TextArea textAreaContent = new TextArea();
 private Socket socket = null;
 private OutputStream out = null;
 private DataOutputStream dos = null;
 private InputStream in = null;
 private DataInputStream dis = null;
 private boolean flag = false;

 /**
 *   :          :  _Victor   :2016 5 8    9:19:51   :       
 * 
 * @param args
 */
 public static void main(String[] args) {
 new ClientFrame().init();
 }

 /**
 *   :          :  _Victor   :2016 5 8    9:20:43   :        
 */
 private void init() {
 this.setSize(300, 300);
 setLocation(250, 150);
 setVisible(true);
 setTitle("WeChatRoom");

 //     
 this.add(textAreaContent);
 this.add(textFieldContent, BorderLayout.SOUTH);
 textAreaContent.setFocusable(false);
 pack();

 //     
 addWindowListener(new WindowAdapter() {
  public void windowClosing(WindowEvent e) {
  System.out.println("        ");
  disconnect();
  System.exit(0);
  }

 });
 // textFieldContent      
 textFieldContent.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
  onClickEnter();
  }
 });

 //     
 connect();
 new Thread(new ReciveMessage()).start();
 }

 private class ReciveMessage implements Runnable {
 @Override
 public void run() {
  flag = true;
  try {
  while (flag) {
   String message = dis.readUTF();
   textAreaContent.append(message + "
"); } } catch (EOFException e) { flag = false; System.out.println(" "); // e.printStackTrace(); } catch (SocketException e) { flag = false; System.out.println(" "); // e.printStackTrace(); } catch (IOException e) { flag = false; System.out.println(" "); e.printStackTrace(); } } } /** * : : : _Victor :2016 5 8 9:49:30 */ private void onClickEnter() { String message = textFieldContent.getText().trim(); if (message != null && !message.equals("")) { String time = new SimpleDateFormat("h:m:s").format(new Date()); textAreaContent.append(time + "
" + message + "
"); textFieldContent.setText(""); sendMessageToServer(message); } } /** * : : : _Victor :2016 5 8 10:13:48 * * @param message */ private void sendMessageToServer(String message) { try { dos.writeUTF(message); dos.flush(); } catch (IOException e) { System.out.println(" "); e.printStackTrace(); } } /** * : socket : : _Victor :2016 5 8 10:00:38 */ private void connect() { try { socket = new Socket("localhost", 8888); out = socket.getOutputStream(); dos = new DataOutputStream(out); in = socket.getInputStream(); dis = new DataInputStream(in); } catch (UnknownHostException e) { System.out.println(" "); e.printStackTrace(); } catch (IOException e) { System.out.println(" "); e.printStackTrace(); } } /** * : : : _Victor :2016 5 8 10:01:32 */ private void disconnect() { flag = false; if (dos != null) { try { dos.close(); } catch (IOException e) { System.out.println("dos "); e.printStackTrace(); } } if (out != null) { try { out.close(); } catch (IOException e) { System.out.println("dos "); e.printStackTrace(); } } if (socket != null) { try { socket.close(); } catch (IOException e) { System.out.println("socket "); e.printStackTrace(); } ; } } }

package com.chat;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.BindException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.List;

public class ChatServer {

 private List<Client> clients = new ArrayList<>();

 /**
 *   :  ChatSever   :          :  _Victor   :2016 5 8    10:26:41
 * 
 * @param args
 */
 public static void main(String[] args) {
 new ChatServer().init();
 }

 /**
 *   : chatserver      :          :  _Victor   :2016 5 8    10:27:09
 */
 private void init() {
 System.out.println("      ");
 // BindException

 ServerSocket ss = null;
 Socket socket = null;
 try {
  ss = new ServerSocket(8888);
 } catch (BindException e) {
  System.out.println("      ");
  e.printStackTrace();
 } catch (IOException e1) {
  e1.printStackTrace();
 }
 try {
  Client client = null;
  while (true) {
  socket = ss.accept();
  System.out.println("    ");
  client = new Client(socket);
  clients.add(client);
  new Thread(client).start();
  }
 } catch (IOException e) {
  e.printStackTrace();
 }
 }

 private class Client implements Runnable {
 private Socket socket = null;
 InputStream in = null;
 DataInputStream din = null;
 OutputStream out = null;
 DataOutputStream dos = null;
 boolean flag = true;

 public Client(Socket socket) {
  this.socket = socket;
  try {
  in = socket.getInputStream();
  din = new DataInputStream(in);
  } catch (IOException e) {
  System.out.println("      ");
  e.printStackTrace();
  }

 }

 public void run() {

  String message;
  try {
  while (flag) {
   message = din.readUTF();
   // System.out.println("   :" + message);
   forwordToAllClients(message);
  }
  } catch (SocketException e) {
  flag = false;
  System.out.println("    ");
  clients.remove(this);
  // e.printStackTrace();
  } catch (EOFException e) {
  flag = false;
  System.out.println("    ");
  clients.remove(this);
  // e.printStackTrace();
  } catch (IOException e) {
  flag = false;
  System.out.println("      ");
  clients.remove(this);
  e.printStackTrace();
  }

  if (din != null) {
  try {
   din.close();
  } catch (IOException e) {
   System.out.println("din    ");
   e.printStackTrace();
  }
  }
  if (in != null) {
  try {
   in.close();
  } catch (IOException e) {
   System.out.println("din    ");
   e.printStackTrace();
  }
  }
  if (socket != null) {
  try {
   socket.close();
  } catch (IOException e) {
   System.out.println("din    ");
   e.printStackTrace();
  }
  }

 }

 /**
  *   :           :          :  _Victor   :2016 5 8    11:11:59
  * 
  * @param message
  * @throws IOException
  */
 private void forwordToAllClients(String message) throws IOException {
  for (Client c : clients) {
  if (c != this) {
   out = c.socket.getOutputStream();
   dos = new DataOutputStream(out);
   forwordToClient(message);
  }
  }
 }

 /**
  *   :           :          :  _Victor   :2016 5 8    11:16:12
  * 
  * @throws IOException
  */
 private void forwordToClient(String message) throws IOException {
  dos.writeUTF(message);
  dos.flush();
  System.out.println("    !");
 }

 }
}
원본 다운로드:자바 채 팅 방 코드
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기