溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java socket如何實(shí)現(xiàn)聊天小程序

發(fā)布時(shí)間:2021-05-28 11:54:09 來源:億速云 閱讀:130 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)java socket如何實(shí)現(xiàn)聊天小程序的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

java socket如何實(shí)現(xiàn)聊天小程序

java socket如何實(shí)現(xiàn)聊天小程序

服務(wù)器

package demo04;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
public class ownServer {
 public static void main(String[] args) {
 // TODO Auto-generated method stub
 new Server().launch();
 }
}
class Server{
 JFrame frame;
 JTextArea taArea;
 JTextField tfField;
 JButton sbButton;
 DataInputStream read ;
 DataOutputStream write;
 ServerSocket scServerSocket; 
 Socket socket;
 
 public void launch() {
 CreateUI();
 CreateNetWork();
 new ServerWrite().start();
 new ServerRead().start();
 } 
 public void CreateUI() {
 frame = new JFrame("MM Server");
 JPanel Panle = new JPanel();
 taArea = new JTextArea(15,25);
 taArea.setLineWrap(true);
 taArea.setWrapStyleWord(true);
 taArea.setEditable(true);
 JScrollPane qScroller=newJScrollPane(taArea); 
 qScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);         
 qScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
 tfField = new JTextField(20);
 sbButton = new JButton("發(fā)送");
 Panle.add(qScroller);
 Panle.add(tfField);
 Panle.add(sbButton); 
    frame.getContentPane().add(BorderLayout.CENTER,Panle);
    frame.setSize(400,400);
    frame.setVisible(true); 
 }
 public void close()
 {
 try
 {
  write.close();
  read.close();
  socket.close();
  scServerSocket.close();
 }
 catch (Exception e)
 {
  System.exit(-1);
 }
 } 
 public void CreateNetWork() { 
  
 try {
   scServerSocket =new ServerSocket(7780);
  socket= scServerSocket.accept();
  read = new DataInputStream(socket.getInputStream());
  write = new DataOutputStream(socket.getOutputStream());  
  System.out.print("網(wǎng)絡(luò)連接");
 
 } catch (Exception e) {
  // TODO: handle exception
  e.printStackTrace();
 } 
 }
 class ServerRead extends Thread{
 public void run() { 
  while (true) {
   try {
   String message = read.readUTF();
   taArea.append("對(duì)方:"+message+ "\n");
  } catch (Exception e1) {
  // TODO: handle exception
  JOptionPane.showMessageDialog(taArea, "提示: 服務(wù)端已經(jīng)斷開連接");
  
  //e.printStackTrace();
  //System.exit(-1);
  return ;
  }  
  }
 }
 }
class ServerWrite extends Thread{
 
 public void run() {
  tfField.addActionListener(new ServerListen());
  sbButton.addActionListener(new ServerListen());
 }
 }
 class ServerListen implements ActionListener{
 @Override
 public void actionPerformed(ActionEvent e) {
  try {
  String str = tfField.getText();
  tfField.setText("");
  taArea.append("我: " + str + "\n");
  write.writeUTF(str);
  
  } catch (Exception e2) {
  // TODO: handle exception
  e2.printStackTrace();
  }
 } 
 } 
}

客戶端

package demo04;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
public class ownClient {
 public static void main(String[] args) {
 // TODO Auto-generated method stub
 new Client().launch();
 }
}
class Client{
 JTextArea taArea;
 JTextField tfField;
 JButton sbButton;
 DataInputStream read = null;
 DataOutputStream write = null;
 Socket socket;
 public void launch() {
 CreateUI();
 CreatNetWork();
 new ClientRead().start();;
 new ClientWrite().start();;
 }
 public void CreateUI() {
 JFrame frame = new JFrame("MM Client");
 JPanel Panle = new JPanel();
 taArea = new JTextArea(15,25);
 taArea.setLineWrap(true);
 taArea.setWrapStyleWord(true);
 taArea.setEditable(true);
 JScrollPane qScroller = new JScrollPane(taArea);
 qScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
 qScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
 
 tfField = new JTextField(20);
 sbButton = new JButton("發(fā)送");
 
 Panle.add(qScroller);
 Panle.add(tfField);
 Panle.add(sbButton); 
  
    frame.getContentPane().add(BorderLayout.CENTER,Panle);
    frame.setSize(400,400);
    frame.setVisible(true);
 }
 public void CreatNetWork() {
 // TODO Auto-generated method stub
 try {
  socket = new Socket("127.0.0.1",7780);
  write = new DataOutputStream(socket.getOutputStream());
  read = new DataInputStream(socket.getInputStream());
  System.out.print("已建立網(wǎng)絡(luò)連接");
 } catch (Exception e) {
  // TODO: handle exception
  e.printStackTrace();
 }
 }
 class ClientRead extends Thread{
 
 public void run() {  
  while (true) {
   try {
   String message= read.readUTF();
   taArea.append("對(duì)方:"+message+ "\n");  
  } catch (Exception e1) {
  // TODO: handle exception
  JOptionPane.showMessageDialog(taArea, "提示: 客戶端已經(jīng)斷開連接");
  
  //e.printStackTrace();
  //System.exit(-1);
  return ;
  }   
  }
 }
 } 
 class ClientWrite extends Thread{
 
 public void run() {
  
  tfField.addActionListener(new ClientListen());
  sbButton.addActionListener(new ClientListen()); 
 }
 } 
 class ClientListen implements ActionListener{
 @Override
 public void actionPerformed(ActionEvent e) {
  try {  
  String str = tfField.getText();
  tfField.setText("");
  taArea.append("我: " + str + "\n");
  write.writeUTF(str);
  
  } catch (Exception e2) {
  // TODO: handle exception
  e2.printStackTrace();
  }
 } 
 } 
}

感謝各位的閱讀!關(guān)于“java socket如何實(shí)現(xiàn)聊天小程序”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI