使用socket实现聊天对话
使用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实现聊天对话相关推荐
- 微信小程序WebSocket实现聊天对话功能完整源码
相关文章: 1.小程序聊天群,发送语音,文字,图片. 2.微信小程序集成腾讯IM,实现实时音视频通话,1V1聊天 3.云开发微信小程序聊天群 4.接入网易云信IM即时通讯的微信小程序聊天室 5.微信小 ...
- C# Socket实现聊天通信
C# Socket实现聊天通信 下面这个实例是一个完整的使用Socket实现的聊天(只限于局域网,如果能提供一个高权限的IP就可以实现类似QQ聊天),其中的原理是:首先开启服务端,打开侦听(任何端口为 ...
- 2Python全栈之路系列之基于socket实现聊天机器人
Python全栈之路系列之基于socket实现聊天机器人 通过socket实现局域网内的聊天工具. service.py文件如下: #!/usr/bin/env python # _*_ coding ...
- 使用Socket模拟聊天室
使用Socket模拟聊天室 文章目录 使用Socket模拟聊天室 客户端 客户端读线程 客户端写线程 客户主函数 服务端 服务端线程 服务端主函数 客户端 客户端读线程 public class Ec ...
- Socket.IO聊天室~简单实用
小编心语:大家过完圣诞准备迎元旦吧~小编在这里预祝大家元旦快乐!!这一次要分享的东西小编也不是很懂啊,总之小编把它拿出来是觉地比较稀奇,而且程序也没有那么难,是一个比较简单的程序,大家可以多多试试~ ...
- java socket 工具_java Socket简易聊天工具
本文实例为大家分享了一款Socket简易聊天工具,希望大家喜欢. 代码运行如图,看起来还不错 服务端 package qiu; import java.awt.BorderLayout; import ...
- Js打开QQ聊天对话窗口
js打开qq聊天对话窗口 总结 1.打开qq群聊天窗口 <a target="_blank" href="http://shang.qq.com/wpa/qunwp ...
- H5聊天对话气泡的一种实现方式及原理
H5聊天对话气泡的一种实现方式及原理 实现效果 实现原理 实现代码 聊天对话气泡实现特别需要处理的是气泡的小尖角. 实现效果 实现原理 基于HTML元素边框原理及CSS伪元素实现气泡小尖角.关键点如下 ...
- CSS聊天对话气泡伪类
CSS聊天对话气泡伪类效果图 例子 <template><view class='msg-box'><text>您好,我是智慧无人商店,点击选择您想要了解的信息吧- ...
最新文章
- 漫画 | 花了七天时间测试,我彻底搞明白了 TCP 的这些内存开销!
- struts2.0实现文件上传
- python序列化和反序列化_python反序列化免杀
- 使用Lombok优化代码
- 【arduino】继续arduino玩CyberPi童芯派之官方arduino库
- 蓝桥杯C语言指数计算,蓝桥杯 算式900!!!!自己编的程序出毛病 了 求大神帮忙!~...
- php获取src,PHP读取文件
- 注释工具_苹果已购丨Notability丨功能强大而简单易用的笔记及PDF注释工具
- 重点做EUR/USD、EUR/JPY、GBP/USD。
- linuxweb集群mysql_企业web高可用集群实战之lvs+keepalived+mysql
- python解决单调栈问题
- 强大的绘图和编辑工具Artstudio Pro mac
- 【工作感想】 关于前后端分离的问题
- Android Studio控件属性大全
- java台球游戏_java桌球小游戏项目
- 菜谱中英文对照Menu with English
- K8S(二)安装配置篇
- 我们为什么要使用室内定位技术?
- 编译原理-语法制导翻译、后缀表达式、三元、四元
- 在 Excel 2007中手动为坐标图添加坐标轴标题
热门文章
- 如何通过局域网安装系统(网刻)
- 基于阿里云的基础架构设施保障(四)IAAS进阶实践运用
- 7700系列交换机集群(堆叠)实践
- 参观linux服务器机房,LINUX服务器在双线机房实现方法
- 解决PS处理DIF后有重影的问题!
- beast软件linux用法,显卡设置项 - 黑苹果驱动高手篇 MultiBeast用法进阶_Linux教程_Linux公社-Linux系统门户网站...
- 是德频谱仪N9020A维修报错维修-安泰维修
- Alpha-Beta剪枝算法在直棋中的运用
- Python爬虫——Scrapy框架(附有实战)
- 蓝桥杯历年真题,来,看看