如何使用javasocket实现一个聊天小程序
发表于:2025-11-15 作者:千家信息网编辑
千家信息网最后更新 2025年11月15日,这篇文章主要介绍"如何使用javasocket实现一个聊天小程序"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"如何使用javasocket实现一个聊天小程序"
千家信息网最后更新 2025年11月15日如何使用javasocket实现一个聊天小程序
这篇文章主要介绍"如何使用javasocket实现一个聊天小程序"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"如何使用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实现一个聊天小程序"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
程序
知识
客户
客户端
对方
网络
行业
提示
服务
不同
实用
内容
实用性
实际
文章
方法
更多
服务器
案例
知识点
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
e审通 连接数据库失败
崇明区营销软件开发定制价格
象山手机软件开发项目
互联网为什么没有龙湖科技
核酸报告几天上传数据库
湖北数据库日志审计功能
服务器t5820
网络安全产品开发
php调用数据库
安徽直播软件开发
永久60级有哪些服务器
服务器系统安全保护的方法
大连市网络安全宣传周问题
应用软件连不上数据库为什么
网络安全应急指挥中心是网警吗
网络安全与执法本科生考研
传奇服务器怎么做防护
如何从数据库删除记录
软件开发和项目排期
架设apache服务器
数据库期末例题
ofo软件开发
学校机房电脑未连接到服务器
数据库表更新触发过程
gaussdb数据库用什么语言
中远网络技术服务
scumpve服务器推荐亚服
成都聚多米网络技术有限公司
大型游戏服务器机房
mac电脑批处理连接共享服务器