真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用java怎么實(shí)現(xiàn)一個(gè)聊天室功能-創(chuàng)新互聯(lián)

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)使用java怎么實(shí)現(xiàn)一個(gè)聊天室功能,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供貴定企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、小程序制作等業(yè)務(wù)。10年已為貴定眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

源碼:

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;


 public static void main(String[] args) {
 new ClientFrame().init();
 }


 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();

 // 關(guān)閉事件
 addWindowListener(new WindowAdapter() {
  public void windowClosing(WindowEvent e) {
  System.out.println("用戶試圖關(guān)閉窗口");
  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 + "\n");
  }
  } catch (EOFException e) {
  flag = false;
  System.out.println("客戶端已關(guān)閉");
  // e.printStackTrace();
  } catch (SocketException e) {
  flag = false;
  System.out.println("客戶端已關(guān)閉");
  // e.printStackTrace();
  } catch (IOException e) {
  flag = false;
  System.out.println("接受消息失敗");
  e.printStackTrace();
  }
 }

 }


 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 + "\n" + message + "\n");
  textFieldContent.setText("");
  sendMessageToServer(message);
 }
 }


 private void sendMessageToServer(String message) {
 try {
  dos.writeUTF(message);
  dos.flush();
 } catch (IOException e) {
  System.out.println("發(fā)送消息失敗");
  e.printStackTrace();
 }
 }


 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();
 }
 }


 private void disconnect() {
 flag = false;
 if (dos != null) {
  try {
  dos.close();
  } catch (IOException e) {
  System.out.println("dos關(guān)閉失敗");
  e.printStackTrace();
  }
 }
 if (out != null) {
  try {
  out.close();
  } catch (IOException e) {
  System.out.println("dos關(guān)閉失敗");
  e.printStackTrace();
  }
 }
 if (socket != null) {
  try {
  socket.close();
  } catch (IOException e) {
  System.out.println("socket關(guān)閉失敗");
  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 clients = new ArrayList<>();


 public static void main(String[] args) {
 new ChatServer().init();
 }


 private void init() {
 System.out.println("服務(wù)器已開啟");
 // 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關(guān)閉失敗");
   e.printStackTrace();
  }
  }
  if (in != null) {
  try {
   in.close();
  } catch (IOException e) {
   System.out.println("din關(guān)閉失敗");
   e.printStackTrace();
  }
  }
  if (socket != null) {
  try {
   socket.close();
  } catch (IOException e) {
   System.out.println("din關(guān)閉失敗");
   e.printStackTrace();
  }
  }

 }


 private void forwordToAllClients(String message) throws IOException {
  for (Client c : clients) {
  if (c != this) {
   out = c.socket.getOutputStream();
   dos = new DataOutputStream(out);
   forwordToClient(message);
  }
  }
 }


 private void forwordToClient(String message) throws IOException {
  dos.writeUTF(message);
  dos.flush();
  System.out.println("轉(zhuǎn)發(fā)成功!");
 }

 }
}

上述就是小編為大家分享的使用java怎么實(shí)現(xiàn)一個(gè)聊天室功能了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)站題目:使用java怎么實(shí)現(xiàn)一個(gè)聊天室功能-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://weahome.cn/article/doegpd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部