温馨提示×

温馨提示×

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

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

使用javasocket怎么实现一个聊天小程序

发布时间:2021-07-08 16:23:13 来源:亿速云 阅读:169 作者:Leah 栏目:编程语言

这篇文章给大家介绍使用javasocket怎么实现一个聊天小程序,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

服务器

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

关于使用javasocket怎么实现一个聊天小程序就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

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

AI