神码组的聊天室项目。
聊天室代码及注释
package NetChat;
import java.awt.BorderLayout;
//这是一个布置容器的边框布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:北、南、东、西、中。
import java.awt.List;
//List 组件为用户提供了一个可滚动的文本项列表。
import java.awt.TextField;
//TextField 对象是允许编辑单行文本的文本组件。
importjava.awt.event.ActionEvent;
//Event 类已废弃,只可用于向后兼容。
importjava.awt.event.ActionListener;
importjava.io.IOException;
//当发生某种 I/O 异常时,抛出此异常。
importjava.net.DatagramPacket; //此类表示数据报包。
importjava.net.DatagramSocket; //此类表示用来发送和接收数据报包的套接字。
importjava.net.InetAddress; //此类表示互联网协议 (IP) 地址。
importjava.net.SocketException; //抛出此异常指示在底层协议中存在错误,如 TCP 错误。
importjava.net.UnknownHostException; //指示主机 IP 地址无法确定而抛出的异常。
import javax.swing.JFrame; //java.awt.Frame 的扩展版本,该版本添加了对 JFC/Swing 组件架构的支持。窗口框架。
import javax.swing.JPanel; //JPanel 是一般轻量级容器,面板。
publicclass netchat {
JFrame jf = new JFrame("聊天窗口");
//新建一个顶层容器窗口框架,为聊天窗口 jf
List l = new List(6); //新建一个列表l,长度为6
JPanel jp = new JPanel();//新建一个中间容器面板jp
TextField tip = newTextField(15);
TextField tdata = new TextField(15);
//新建两个文本框tip和tdata,长度为15
DatagramSocket ds;
//通过DatagramSocket类创建一个Socket(套接字)对象ds
// DatagramPacket dp;
public netchat() {
tip.setText("127.0.0.1");
//调用tip的setText方法设置其内容为127.0.0.1
try {
ds = newDatagramSocket(3000);
} catch (SocketExceptione) {
e.printStackTrace();
} //捕获异常
new Thread(new Runnable()
//实例化Thread类创建一个线程,用来传递Runnable
{
DatagramPacket dp;
//通过DatagramPackeet类创建一个Packet(数据报)对象dp
publicvoid run() {
byte[] buf = newbyte[1024];// 定义一个字节变量buf,长度为1024
dp = newDatagramPacket(buf, 1024);//实例化数据报dp,容量大小为1024个字节
while (true) { //循环为true,即一直实现监听状态,实现实时接收
try {
ds.receive(dp); //调用Socket的receive方法进行数据报的接收
//l.add(dp.getAddress().getHostName()+"say:"+new
// String(buf,0,dp.getLength()),-1);
//l.add(dp.getAddress().getHostAddress()+" say:"+new
// String(buf,0,+dp.getLength()),-1);
System.out.println("aaaa"); //输出aaaa
String str = new String(dp.getData(), 0, dp.getLength());
//定义一个字符串变量str内容为数据报的内容和长度
System.out.println("数据1是:" + str);
//输出数据1是str的内容
String str2 = new String(buf, 0, dp.getLength());
//定义字符串变量str2其内容为buf的内容和长度
System.out.println("数据2是:" + str2);
//输出数据2是str2的内容
l.add(dp.getAddress().getHostAddress()+ " say:" + str,
-1);
} catch (IOException e){
e.printStackTrace(); //捕获IO端口异常
}
}
}
}).start(); //线程开始
}
publicstaticvoid main(String[]args) {//主程序
newnetchat().init(); //实例化netchat的init方法
}
privatevoid init() {
jf.add(l); //列表
jp.add(tip, BorderLayout.WEST); //在文本框tip中添加加组件
jp.add(tdata, BorderLayout.EAST);//在文本框 tdata中添加组件
jf.add(jp, BorderLayout.SOUTH); //向容器jp中添加组件
jf.setSize(400,300); //设置窗体大小
jf.setVisible(true); //设置窗体是否可见,可见
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗体的关闭操作
tdata.addActionListener(new ActionListener(){
//实例化tdata的addActionListener方法添加一个新的ActionListener变量
publicvoidactionPerformed(ActionEvent e) {
byte[] buf;
String str222 = e.getActionCommand();
buf = str222.getBytes();
System.out.println("ddd=" + str222);
l.add("我说:" + str222, -1);
// buf = e.getActionCommand().getBytes();
DatagramPacket dp;
//通过DatagramPackeet类创建一个Packet(数据报)对象dp
try {
dp = new DatagramPacket(buf, buf.length,InetAddress
.getByName(tip.getText()),3000);
ds.send(dp);
} catch (UnknownHostException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
((TextField) e.getSource()).setText("");
}
});
}
}
神码组的聊天室项目。相关推荐
- Linux环境下——C语言聊天室项目
由于使用了多线程操作,客户端进入程序后请先随便注册一次用户后再进行使用. 本程序默认第一个用户即ID为1的用户为超级管理员. 由于线程阻塞,最后的踢人操作有阻塞,需要在被踢出在线链表后手动下线. 看了 ...
- 基于Linux下的即时通讯聊天室项目(全代码 有注释 可直接运行)
基于Linux下的即时通讯聊天室项目 一.序言 二.具体功能 三.系统客户要求 四.具体代码 1.服务器代码 2.客户端代码 一.序言 最近在写一个基于Linux下的聊天工具 它适合于局域网内所有人进 ...
- 仿微信的网络聊天室项目开发【完整源码讲解】
目录 总体开发思路 服务器端 服务器界面设计 建立TCP服务器端通信 建立服务器消息发送输出流 建立服务器消息接收输入流 建立服务器实时消息通信线程 设置服务器通信自由断开 客户端 客户端界面设计 建 ...
- C语言聊天室项目说明书
网络聊天室项目说明 项目的目的和意义 该聊天室项目为利用linux下C语言网络编程相关知识,采用Server/Client,即服务器与客户端的基本框架实现.整个项目涉及了socket套接字,线程,嵌入 ...
- 聊天室项目(一)-展示
聊天室功能展示 聊天室要求: 1 . 项目简述 实现Linux环境下的简易聊天室,采用C/S模型,实现多客户端之间的稳定数据传输.可参考QQ.微信功能. 2. 项目需求 功能后的与代表选做,其中代表难 ...
- Springboot+Vue实现在线聊天室项目-修改头像、添加好友接口的实现
Springboot+Vue实现在线聊天室项目 该聊天室为大二上学期计算机网络大作业,并且是本人第一次使用vue实现前后端分离的项目,前端架构尚未熟悉可能会出现一些不妥之处,还请大佬们指出.(本文章写 ...
- Java聊天室项目GUI界面化实现(Java聊天室 IO流 Socket流 GUI界面 )
Java聊天室项目GUI界面化实现(Java聊天室 IO流 Socket流 GUI界面 ) 文章目录 Java聊天室项目GUI界面化实现(Java聊天室 IO流 Socket流 GUI界面 ) 1.J ...
- 【Java学习】聊天室项目(32)
聊天室项目需求: 1.用户名登录注册(判断有没有重复用户名,可设置ip和端口) 2.上下线提醒 3.在线列表 4.私聊 5.公聊 6.发送文字,文件. 7.聊天记录 保存 查询 删除. 8.下线 选做 ...
- 基于socket实现的多人聊天室项目(python)
最近做了一个多人聊天室项目,主要目的是练习和巩固socket编程. 在开始之前,可以先了解一下socket的TCP三次握手和四次挥手. 参考:https://blog.csdn.net/luoyoub ...
最新文章
- CSS——如何清除浮动
- Excel中配置VBA的工作环境
- qq第三方登录注册php,QQ第三方登录PHP
- EasyRTMP实现的rtmp推流的基本协议流程
- Python下socket通信
- java处理获取到的Elasticsearch数据
- 中国数码摄像机市场趋势报告、技术动态创新及市场预测
- MikroTik RouterOS 6.x版本开始支持使用img镜像安装(U盘安装的终极解决方法)
- Datagridview中的数据很多,加载完数据后滚动条自动到最下边,如何解决?
- kettle 读xml无法获得属性信息,输出表修改不能自动更新修改办法
- 三菱FX3UFX2NFX1N PLC 模拟器模拟通信功能,模拟PLC实体,FX3U仿真器,仿真PLC服务器
- 网页中添加QQ链接,别人一点就能和我进行QQ聊天
- 跨平台报表和仪表板工具Stimulsoft v2020.1,一键自动激活移动模式
- java char表_char码值对应列表大全
- 华为手机linux终端,华为云IoT如何让“哑”终端进化为智能终端?看完这场直播你就明白了...
- 力扣数据库(end09.02)
- Ubuntu下Rhythmbox乱码的解决办法
- 美国大学生数学建模竞赛赛题题型分类
- 安装google扩展
- Algorithms and Data Structures I