使用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. 漫画 | 花了七天时间测试,我彻底搞明白了 TCP 的这些内存开销!
  2. struts2.0实现文件上传
  3. python序列化和反序列化_python反序列化免杀
  4. 使用Lombok优化代码
  5. 【arduino】继续arduino玩CyberPi童芯派之官方arduino库
  6. 蓝桥杯C语言指数计算,蓝桥杯 算式900!!!!自己编的程序出毛病 了 求大神帮忙!~...
  7. php获取src,PHP读取文件
  8. 注释工具_苹果已购丨Notability丨功能强大而简单易用的笔记及PDF注释工具
  9. 重点做EUR/USD、EUR/JPY、GBP/USD。
  10. linuxweb集群mysql_企业web高可用集群实战之lvs+keepalived+mysql
  11. python解决单调栈问题
  12. 强大的绘图和编辑工具Artstudio Pro mac
  13. 【工作感想】 关于前后端分离的问题
  14. Android Studio控件属性大全
  15. java台球游戏_java桌球小游戏项目
  16. 菜谱中英文对照Menu with English
  17. K8S(二)安装配置篇
  18. 我们为什么要使用室内定位技术?
  19. 编译原理-语法制导翻译、后缀表达式、三元、四元
  20. 在 Excel 2007中手动为坐标图添加坐标轴标题

热门文章

  1. 如何通过局域网安装系统(网刻)
  2. 基于阿里云的基础架构设施保障(四)IAAS进阶实践运用
  3. 7700系列交换机集群(堆叠)实践
  4. 参观linux服务器机房,LINUX服务器在双线机房实现方法
  5. 解决PS处理DIF后有重影的问题!
  6. beast软件linux用法,显卡设置项 - 黑苹果驱动高手篇 MultiBeast用法进阶_Linux教程_Linux公社-Linux系统门户网站...
  7. 是德频谱仪N9020A维修报错维修-安泰维修
  8. Alpha-Beta剪枝算法在直棋中的运用
  9. Python爬虫——Scrapy框架(附有实战)
  10. 蓝桥杯历年真题,来,看看