使用Socket建立客户端与服务器之间的连接
实现服务器与用户进行聊天的关键在于服务器与客户端不停的刷新,时刻接受相互传来的信息。

//客户端程序:
package text;import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.*;
import javax.swing.*;public class MyClient1 extends JFrame implements ActionListener{JTextArea jta = null;
JTextField jtf = null;
JButton jb = null;
JPanel jpl= null;
JScrollPane jsp = null;
//把信息发给客户端的对象
PrintWriter pw =null;public static void main(String [] args){
MyClient1 mc = new MyClient1();
}public MyClient1(){
jta = new JTextArea();
jtf = new JTextField(20);
jb= new JButton("发送");
jb.addActionListener(this);
jpl = new JPanel();
jsp = new JScrollPane(jta);
jpl.add(jtf);
//jpl.add(jta);
jpl.add(jb);
this.add(jsp,"Center");
this.add(jpl,"South");
this.setTitle("客户端");
this.setSize(400,300);
this.setVisible(true);try {
Socket s = new Socket("127.0.0.1",9988);
InputStreamReader isr = new InputStreamReader(s.getInputStream());
BufferedReader br = new BufferedReader(isr);pw = new PrintWriter(s.getOutputStream(),true);while(true){
//不停地读取从服务器端发来的信息
String info = br.readLine();
jta.append("服务端:"+info+"\r\n");}} catch (UnknownHostException e) {e.printStackTrace();
} catch (IOException e) {e.printStackTrace();
}}@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//如果用户按下发送信息按钮
if(e.getSource()==jb){
//把服务器在框里写内容发送给客户端
String info = jtf.getText();
jta.append("客户端:"+info+"\r\n");
pw.println(info);//发送
jtf.setText("");//清空输入框
}
}
}//服务器程序
package text;import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.*;
import javax.swing.*;public class MyServer1 extends JFrame implements ActionListener{/**
*
*/
private static final long serialVersionUID = 1L;
JTextArea jta = null;
JTextField jtf = null;
JButton jb = null;
JPanel jpl= null;
JScrollPane jsp = null;
//把信息发给客户端的对象
PrintWriter pw =null;
public static void main(String [] args){
MyServer1 ms = new MyServer1();
}
public MyServer1(){
jta = new JTextArea();
jtf = new JTextField(20);
jb= new JButton("发送");
jb.addActionListener(this);
jpl = new JPanel();
jsp = new JScrollPane(jta);
jpl.add(jtf);
//jpl.add(jta);
jpl.add(jb);
this.add(jsp,"Center");
this.add(jpl,"South");
this.setTitle("server");
this.setSize(400,300);
this.setVisible(true);
//服务器监听
try {
ServerSocket ss= new ServerSocket(9988);
//等待客户端连接
Socket s = ss.accept();
//读取客户端发来的信息
InputStreamReader isr = new InputStreamReader(s.getInputStream());
BufferedReader brd = new BufferedReader(isr);
pw = new PrintWriter(s.getOutputStream(),true);
while(true){
//读取客户端信息
String info = brd.readLine();
//把客户端信息写到信息栏
jta.append("客户端:"+info+"\r\n");
}
} catch (IOException e) {
e.printStackTrace();
}
}@Override
public void actionPerformed(ActionEvent e) {
//如果用户按下发送信息按钮
if(e.getSource()==jb){
//把服务器在框里写内容发送给客户端
String info = jtf.getText();
jta.append("服务端:"+info+"\r\n");
pw.println(info);//发送
jtf.setText("");//清空输入框
}
}}

实现效果:

使用socket实现聊天对话相关推荐

  1. 微信小程序WebSocket实现聊天对话功能完整源码

    相关文章: 1.小程序聊天群,发送语音,文字,图片. 2.微信小程序集成腾讯IM,实现实时音视频通话,1V1聊天 3.云开发微信小程序聊天群 4.接入网易云信IM即时通讯的微信小程序聊天室 5.微信小 ...

  2. C# Socket实现聊天通信

    C# Socket实现聊天通信 下面这个实例是一个完整的使用Socket实现的聊天(只限于局域网,如果能提供一个高权限的IP就可以实现类似QQ聊天),其中的原理是:首先开启服务端,打开侦听(任何端口为 ...

  3. 2Python全栈之路系列之基于socket实现聊天机器人

    Python全栈之路系列之基于socket实现聊天机器人 通过socket实现局域网内的聊天工具. service.py文件如下: #!/usr/bin/env python # _*_ coding ...

  4. 使用Socket模拟聊天室

    使用Socket模拟聊天室 文章目录 使用Socket模拟聊天室 客户端 客户端读线程 客户端写线程 客户主函数 服务端 服务端线程 服务端主函数 客户端 客户端读线程 public class Ec ...

  5. Socket.IO聊天室~简单实用

    小编心语:大家过完圣诞准备迎元旦吧~小编在这里预祝大家元旦快乐!!这一次要分享的东西小编也不是很懂啊,总之小编把它拿出来是觉地比较稀奇,而且程序也没有那么难,是一个比较简单的程序,大家可以多多试试~ ...

  6. java socket 工具_java Socket简易聊天工具

    本文实例为大家分享了一款Socket简易聊天工具,希望大家喜欢. 代码运行如图,看起来还不错 服务端 package qiu; import java.awt.BorderLayout; import ...

  7. Js打开QQ聊天对话窗口

    js打开qq聊天对话窗口 总结 1.打开qq群聊天窗口 <a target="_blank" href="http://shang.qq.com/wpa/qunwp ...

  8. H5聊天对话气泡的一种实现方式及原理

    H5聊天对话气泡的一种实现方式及原理 实现效果 实现原理 实现代码 聊天对话气泡实现特别需要处理的是气泡的小尖角. 实现效果 实现原理 基于HTML元素边框原理及CSS伪元素实现气泡小尖角.关键点如下 ...

  9. CSS聊天对话气泡伪类

    CSS聊天对话气泡伪类效果图 例子 <template><view class='msg-box'><text>您好,我是智慧无人商店,点击选择您想要了解的信息吧- ...

最新文章

  1. libnet apply method
  2. 关于linkedin的network的观察和自己的职业道路的追求
  3. 20 岁发表 SCI 的学霸,梦想用算法改变世界
  4. java 性能 排序_Java常用排序算法及性能测试集合
  5. 它是最神秘的黑客组织:来自战斗民族 专黑美国
  6. form中action属性后面?传递参数 获取不到
  7. (JAVA)String类之比较方法
  8. 【线性dp】【决策优化】CH5E02
  9. python time 时间戳_Python的time.time()返回本地或UTC时间戳吗?
  10. linux远程工具_【linux实操3.1】linux远程连接工具Secure的使用
  11. Python:List、tuple、dict、set
  12. 【Redis】Redis 替代方案
  13. linux怎么建立链接文件,Linux 建立文件夹的链接
  14. php mysql手册下载chm_PHP7教程|PHP7中文手册下载chm版 - 欧普软件下载
  15. 重庆市机电工业学校计算机专业,重庆机电工业学校2021年招生计划
  16. 如何将两张图片合成一张?
  17. 凌恩客户文献|《ISME》解析土壤侵蚀对微生物群落结构以及网络功能复杂性影响
  18. Ubuntu终端Terminator的安装与配置使用
  19. onblur和onfocus
  20. 关于闲鱼测试数据构造,我有几条心得

热门文章

  1. 电子计算机技术文件检索,GB T 4967-1995_电子计算器通用技术条件_高清版_可检索.pdf-文档在线预览...
  2. 自动驾驶行业观察之2023上海车展-----车企发展趋势(3)
  3. 2007中国手机客户端软件TOP50
  4. Python 到底是 线程快 还是 进程快
  5. Geoffrey Hinton:我的五十年深度学习生涯与研究心法
  6. 对云端软件平台的印象
  7. Python之禅+八荣八耻
  8. 低频数字式相位测试仪的原理与使用
  9. linux软件安装 home,Ubuntu中安装建筑设计软件Sweet Home 3D
  10. M5311接入onenet(LwM2M方式)