聊天室代码及注释

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();  //实例化netchatinit方法

}

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("");

}

});

}

}

神码组的聊天室项目。相关推荐

  1. Linux环境下——C语言聊天室项目

    由于使用了多线程操作,客户端进入程序后请先随便注册一次用户后再进行使用. 本程序默认第一个用户即ID为1的用户为超级管理员. 由于线程阻塞,最后的踢人操作有阻塞,需要在被踢出在线链表后手动下线. 看了 ...

  2. 基于Linux下的即时通讯聊天室项目(全代码 有注释 可直接运行)

    基于Linux下的即时通讯聊天室项目 一.序言 二.具体功能 三.系统客户要求 四.具体代码 1.服务器代码 2.客户端代码 一.序言 最近在写一个基于Linux下的聊天工具 它适合于局域网内所有人进 ...

  3. 仿微信的网络聊天室项目开发【完整源码讲解】

    目录 总体开发思路 服务器端 服务器界面设计 建立TCP服务器端通信 建立服务器消息发送输出流 建立服务器消息接收输入流 建立服务器实时消息通信线程 设置服务器通信自由断开 客户端 客户端界面设计 建 ...

  4. C语言聊天室项目说明书

    网络聊天室项目说明 项目的目的和意义 该聊天室项目为利用linux下C语言网络编程相关知识,采用Server/Client,即服务器与客户端的基本框架实现.整个项目涉及了socket套接字,线程,嵌入 ...

  5. 聊天室项目(一)-展示

    聊天室功能展示 聊天室要求: 1 . 项目简述 实现Linux环境下的简易聊天室,采用C/S模型,实现多客户端之间的稳定数据传输.可参考QQ.微信功能. 2. 项目需求 功能后的与代表选做,其中代表难 ...

  6. Springboot+Vue实现在线聊天室项目-修改头像、添加好友接口的实现

    Springboot+Vue实现在线聊天室项目 该聊天室为大二上学期计算机网络大作业,并且是本人第一次使用vue实现前后端分离的项目,前端架构尚未熟悉可能会出现一些不妥之处,还请大佬们指出.(本文章写 ...

  7. Java聊天室项目GUI界面化实现(Java聊天室 IO流 Socket流 GUI界面 )

    Java聊天室项目GUI界面化实现(Java聊天室 IO流 Socket流 GUI界面 ) 文章目录 Java聊天室项目GUI界面化实现(Java聊天室 IO流 Socket流 GUI界面 ) 1.J ...

  8. 【Java学习】聊天室项目(32)

    聊天室项目需求: 1.用户名登录注册(判断有没有重复用户名,可设置ip和端口) 2.上下线提醒 3.在线列表 4.私聊 5.公聊 6.发送文字,文件. 7.聊天记录 保存 查询 删除. 8.下线 选做 ...

  9. 基于socket实现的多人聊天室项目(python)

    最近做了一个多人聊天室项目,主要目的是练习和巩固socket编程. 在开始之前,可以先了解一下socket的TCP三次握手和四次挥手. 参考:https://blog.csdn.net/luoyoub ...

最新文章

  1. CSS——如何清除浮动
  2. Excel中配置VBA的工作环境
  3. qq第三方登录注册php,QQ第三方登录PHP
  4. EasyRTMP实现的rtmp推流的基本协议流程
  5. Python下socket通信
  6. java处理获取到的Elasticsearch数据
  7. 中国数码摄像机市场趋势报告、技术动态创新及市场预测
  8. MikroTik RouterOS 6.x版本开始支持使用img镜像安装(U盘安装的终极解决方法)
  9. Datagridview中的数据很多,加载完数据后滚动条自动到最下边,如何解决?
  10. kettle 读xml无法获得属性信息,输出表修改不能自动更新修改办法
  11. 三菱FX3UFX2NFX1N PLC 模拟器模拟通信功能,模拟PLC实体,FX3U仿真器,仿真PLC服务器
  12. 网页中添加QQ链接,别人一点就能和我进行QQ聊天
  13. 跨平台报表和仪表板工具Stimulsoft v2020.1,一键自动激活移动模式
  14. java char表_char码值对应列表大全
  15. 华为手机linux终端,华为云IoT如何让“哑”终端进化为智能终端?看完这场直播你就明白了...
  16. 力扣数据库(end09.02)
  17. Ubuntu下Rhythmbox乱码的解决办法
  18. 美国大学生数学建模竞赛赛题题型分类
  19. 安装google扩展
  20. Algorithms and Data Structures I

热门文章

  1. 在局域网内开发 虚拟专用网络
  2. 复录比低的计算机学校,这7所报录比低的实力院校,赶紧捡漏一波!
  3. PDF怎么在线编辑?不妨试试这个办法
  4. 在VMWare虚机上安装集客网关X86软件
  5. 【进阶篇】全流程学习《20天掌握Pytorch实战》纪实 | Day10 | 高阶API示范
  6. 外贸线上推广引流的技巧
  7. Java实现操作系统进程调度模拟程序+GUI图形化
  8. 网络层协议和传输层协议
  9. linux强刷cache,linux I/O stack cache 强制刷新
  10. 一些实用网站整理(关于平面设计、视频后期)