温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java socket如何实现聊天小程序

发布时间:2021-05-28 11:54:09 来源:亿速云 阅读:175 作者:小新 栏目:编程语言

这篇文章给大家分享的是有关java socket如何实现聊天小程序的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

java socket如何实现聊天小程序

java socket如何实现聊天小程序

服务器

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("发送");  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("网络连接");    } catch (Exception e) {   // TODO: handle exception   e.printStackTrace();  }   }  class ServerRead extends Thread{  public void run() {    while (true) {    try {    String message = read.readUTF();    taArea.append("对方:"+message+ "\n");   } catch (Exception e1) {   // TODO: handle exception   JOptionPane.showMessageDialog(taArea, "提示: 服务端已经断开连接");      //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("发送");    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("已建立网络连接");  } catch (Exception e) {   // TODO: handle exception   e.printStackTrace();  }  }  class ClientRead extends Thread{    public void run() {     while (true) {    try {    String message= read.readUTF();    taArea.append("对方:"+message+ "\n");     } catch (Exception e1) {   // TODO: handle exception   JOptionPane.showMessageDialog(taArea, "提示: 客户端已经断开连接");      //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();   }  }   }  }

感谢各位的阅读!关于“java socket如何实现聊天小程序”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI