javaitchat的简单介绍

博主:adminadmin 2023-01-07 09:48:09 763

今天给各位分享javaitchat的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

怎么利用java获取微信聊天窗口给好友发信息

java做微信,你可以尝试用itchat4j,是java操作微信的包,可以实现微信的登陆,自动回复等

用JAVA 编写简单网络聊天程序

/**

* 基于UDP协议的聊天程序

*

* 2007.9.18

* */

//导入包

import java.awt.*;

import java.awt.event.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.*;

import java.net.*;

public class Chat extends JFrame implements ActionListener

{

//广播地址或者对方的地址

public static final String sendIP = "172.18.8.255";

//发送端口9527

public static final int sendPort = 9527;

JPanel p = new JPanel();

List lst = new List(); //消息显示

JTextField txtIP = new JTextField(18); //填写IP地址

JTextField txtMSG = new JTextField(20); //填写发送消息

JLabel lblIP = new JLabel("IP地址:");

JLabel lblMSG = new JLabel("消息:");

JButton btnSend = new JButton("发送");

byte [] buf;

//定义DatagramSocket的对象必须进行异常处理

//发送和接收数据报包的套接字

DatagramSocket ds = null;

//=============构造函数=====================

public Chat()

{

CreateInterFace();

//注册消息框监听器

txtMSG.addActionListener(this);

btnSend.addActionListener(this);

try

{

//端口:9527

ds =new DatagramSocket(sendPort);

}

catch(Exception ex)

{

ex.printStackTrace();

}

//============接受消息============

//匿名类

new Thread(new Runnable()

{

public void run()

{

byte buf[] = new byte[1024];

//表示接受数据报包

while(true)

{

try

{

DatagramPacket dp = new DatagramPacket(buf,1024,InetAddress.getByName(txtIP.getText()),sendPort);

ds.receive(dp);

lst.add("【消息来自】◆" + dp.getAddress().getHostAddress() + "◆"+"【说】:" + new String (buf,0,dp.getLength()) /*+ dp.getPort()*/,0);

}

catch(Exception e)

{

if(ds.isClosed())

{

e.printStackTrace();

}

}

}

}

}).start();

//关闭窗体事件

this.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent w)

{

System.out.println("test");

int n=JOptionPane.showConfirmDialog(null,"是否要退出?","退出",JOptionPane.YES_NO_OPTION);

if(n==JOptionPane.YES_OPTION)

{

dispose();

System.exit(0);

ds.close();//关闭ds对象//关闭数据报套接字

}

}

});

}

//界面设计布局

public void CreateInterFace()

{

this.add(lst,BorderLayout.CENTER);

this.add(p,BorderLayout.SOUTH);

p.add(lblIP);

p.add(txtIP);

p.add(lblMSG);

p.add(txtMSG);

p.add(btnSend);

txtIP.setText(sendIP);

//背景颜色

lst.setBackground(Color.yellow);

//JAVA默认风格

this.setUndecorated(true);

this.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);

this.setSize(600,500);

this.setTitle("〓聊天室〓");

this.setResizable(false);//不能改变窗体大小

this.setLocationRelativeTo(null);//窗体居中

this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

this.setVisible(true);

txtMSG.requestFocus();//消息框得到焦点

}

//===============================Main函数===============================

public static void main(String[]args)

{

new Chat();

}

//================================发送消息===============================

//消息框回车发送消息事件

public void actionPerformed(ActionEvent e)

{

//得到文本内容

buf = txtMSG.getText().getBytes();

//判断消息框是否为空

if (txtMSG.getText().length()==0)

{

JOptionPane.showMessageDialog(null,"发送消息不能为空","提示",JOptionPane.WARNING_MESSAGE);

}

else{

try

{

InetAddress address = InetAddress.getByName(sendIP);

DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName(txtIP.getText()),sendPort);

ds.send(dp);

}

catch(Exception ex)

{

ex.printStackTrace();

}

}

txtMSG.setText("");//清空消息框

//点发送按钮发送消息事件

if(e.getSource()==btnSend)

{

buf = txtMSG.getText().getBytes();

try

{

DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName(txtIP.getText()),sendPort);

}

catch(Exception ex)

{

ex.printStackTrace();

}

txtMSG.setText("");//清空消息框

txtMSG.requestFocus();

}

}

}

为java聊天室代码加详细注释,并说明设计思路。好的加100分。

import java.io.*;

import java.net.*;

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;//引入包。

public class ChatClient {

public static void main(String[] args) {

ChatClient cc = new ChatClient();

cc.receive();

}

JTextField jtf; // 文本条

JTextArea jta; //文本域。

Socket s; //客户端

PrintWriter out; //输出流

BufferedReader in; //输入流

public ChatClient() {

JFrame frame = new JFrame("ChatClient");//窗口

frame.setSize(400, 300); //大小

jta = new JTextArea(); //文本域

jta.setEditable(false); //不可编辑

jtf = new JTextField();//文件条

jtf.addActionListener(new ActionListener() { //添加监听。

public void actionPerformed(ActionEvent arg0) {

send(); //调用send()方法

}

});

frame.getContentPane().add(new JScrollPane(jta)); //添加滚动条

frame.getContentPane().add(jtf, "South"); //添加文本条

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口。

frame.setVisible(true); //可显示的。

try {

s = new Socket("127.0.0.1", 9000); //连接服务端 socket("主机名",端口号);

in = new BufferedReader(new InputStreamReader(s.getInputStream())); //建立输入流

out = new PrintWriter(s.getOutputStream());//输出流

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public void receive() { //接受服务端发来别的客户端的信息。

while (true) {

try {

String text = in.readLine(); //读一行

this.jta.append(text + "\n"); //jta 添加上读入的。

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

return;

}

}

}

public void send() { //发送消息

String text = this.jtf.getText(); //得到你输入的消息

this.jtf.setText(""); //在文本域中显示你输入的消息。

out.println(text); //打印出。

out.flush(); //清空

}

}

Server端

import java.net.*;

import java.io.*;

import java.util.*;//引入包

public class ChatServer {

public static void main(String[] args) throws Exception {

ServerSocket ss = new ServerSocket(9000); //建立服务端,端口号为9000

List list = new ArrayList(); //创建个List集合。

while (true) {

Socket s = ss.accept(); //等待客户端的请求。

list.add(s); //把每一个client都add到集合中去。

Thread t = new ServerThread(s, list); //线程。

t.start(); //启动。

}

}

}

class ServerThread extends Thread {

Socket s;

List list;

BufferedReader in;

PrintWriter out;

public ServerThread(Socket s, List list) { //构造。传入socket和list。

this.s = s;

this.list = list;

try {

in = new BufferedReader(new InputStreamReader(s.getInputStream())); //输入流

out = new PrintWriter(s.getOutputStream()); //输出流

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public void run() { //必须实现其run()方法。

while (true) {

try {

String str = in.readLine(); //得到client端的message。

if (str == null) //如果没有消息就返回。

return;

Iterator it = list.iterator(); //遍历list。

while (it.hasNext()) { //如果list有下一个

Socket socket = (Socket) (it.next()); //因为list中都是存的socket

PrintWriter o = new PrintWriter(socket.getOutputStream()); //输出流

o.println(str); //输出

o.flush(); //清空

}

} catch (IOException e) {

// TODO Auto-generated catch block

// e.printStackTrace();

return;

}

}

}

}

微密圈怎么私聊

taky1999 

码龄14年

关注

微信是一个最常用的通信工具,拥有庞大的用户群,知名度非常高,也就是说,基本地球人都知道它是用来聊天的,它的方便、功能强大之余,就显得不够隐秘了。要查聊天,某信当然是首先要查的,什么电脑同步信息,某信聊天记录恢复工具,等等都会派上上场。不偏题目,微信如何加密私聊,其它不难,一共有两种方案。

一、第一种方案

微信就打开时需要指纹或者就是需要输入你自己的密码就可以了。

输入隐私密码,找到微信并将按钮开启即可

会看到登录微信后边有一个按钮,打开它即可。

二、方案二

第一种方案是简单粗暴,就是要输入密码才能看,或者干脆手机密码都私密化,当然看不到,但有时的应用场景不是这样的嘛,有些应用场景是:手机随便看,随便翻,就是不可能发现问题。了解一下无痕猫,在微信助手输入网址,点击进去就可以聊天了,跟微信独立,不会同步信息,带聊天密码锁,不用时,上密码锁,以及关闭就好了,需要使用时,再点击微信助手的链接,就可以重新进入聊天,不过上锁后,要输入密码才能进入,不需要安装软件。看懂的人始终会懂。

system.out.println('hello ,无痕猫');

System是lang包下的一个类。

至于out,可想而知是System的一个类变量。关键就是out调用了println()等等方法,再来看API

out是PrintStream类实例,自然就可以调用PrintStream类诸如println(),print()等相关实例方法了。

至此,读者可以自行查询PrintStream的API文档了。

打开CSDN,阅读体验更佳

PC微信逆向:实现自动保存加密的聊天图片_BUG制造者:图图的博客-CSDN博 ...

此时我们点击K显示堆栈,找到第一层返回地址,右键显示调用 当微信运行到这里的时候,图片加密已经完成,我们要在这个函数之前找到图片的加密算法,其实就在上面一点点的位置,鼠标稍微往上翻一下就能看到 找到这个地方之后清除剩下的所有的断点,...

加密聊天工具介绍_weixin_30496431的博客

这足以说明Telegram对其加密安全的自信,这一点也着实让人由衷敬佩。 另外Telegram的群聊模式体验非常不错,比如支持针对性的回复,其实就是跟微信QQ@回复相同。。。群聊人数从最初的支持500人,到之后的5000人,2017年增加到10000人~~ Tele...

DES加密全双工聊天程序

这是我的文章中代码的源码,有需要的可以下载下来做进一步改进

java 加密 聊天_java 实现加密

packagecrypt;importjava.security.InvalidKeyException;importjava.security.KeyPair;importjava.security.KeyPairGenerator;importjava.security.NoSuchAlgorithmException;importjava.security.interfaces.RSAPri...

继续访问

微信公众号聊天室 私聊功能演示_Cc琎的博客

下图是俩功能, 收到消息后, 可有微信推送提醒1. 点击头像和用户私聊2. 点击顶部联系管理菜单, 主动与客服管理私聊效果图预览

微信聊天记录加密图片还可查看??_huichendelvxing的博客

在PC端会被加密后保存为 dat 文件 发现一款软件直接支持查看dat文件 不用登录微信在线解码的地址: 登陆 好不好用,试试再说。 就可以查看存在本地

微信用户对方微信隐私设置了怎么加

1、首先加一个对方bai设置了du隐私的微信好友,会zhi提示如下: 2、首dao先点击如图右上zhuan角三个点; 3、点击加入黑名单; 4、接着点击确定; 5、然后点击微信,下边的“我” ; 6、接着点击隐私; 7、点击通讯录黑名单; 8、点击刚刚添加的名片,添加到通讯录; 9、点击发送; 10、最后将对方从黑名单移除,就添加上了。 ...

继续访问

最新发布 微信小程序用户隐私保护指引设置怎么填?

我们在微信小程序审核时,可能会出现下图的提示。确认生成协议,就可以提交小程序审核了。进入下图的界面,点击下图所示选项。此时点击上图中的“了解详情”需要我们完善用户隐私协议。点击“确认以上内容”勾选以上两项,再确认。

继续访问

微信聊天防封 亲测 百分之95有效 【附源码】_liuxianpe的博客...

微信聊天防封 亲测 百分之95有效 【附源码】 把你想发给某一个人的“一句话改变成一张图片“” 并在文字的外围加上框,来实现防封 默认快捷键AIt+Q ,可以隐藏或显示主界面 显示状态下,该程序自动跟随鼠标移动 ...

iphone相册怎么加密_给iPhone手机添加应用锁,微信隐私有保障

在现在每个人手中都有一个手机的社会中,手机隐私是每个人都特别注重保护的一方面。但是相信在使用iPhone手机的用户,都能体验到iOS功能不完全性的问题,也就是很多在安卓系统上已经相对成熟的常用个性化功能都相继更新使用的时候,iOS还处于一点更新动静都没有的状态。其中 “应用锁”也算得上是一个比较常用的隐私保护功能。在iOS系统上,这个功能没更新出来之前,相信很多iPhone用户对于自身隐私保护方面...

继续访问

无痕猫页面聊天软件,不需安装

无痕猫,是一个主打为情侣专门打造的聊天平台,聊天界面友好,包括可爱的情侣表情包,图片发送等,还有私密的相册、收藏相册。最重要的特点是,它不需要另外安装APP,只需要在浏览器登陆就可以了,双击聊天界面,快速锁屏,屏蔽聊天界面,安全可靠。在锁屏状态下关闭浏览器,下次登陆时,仍然以锁聊天界面状态登陆,必须输入密码才能进入安全可靠.在联系的过程中,各显神通,私密性最好的,就是页面聊天方式。无痕猫网址 whm8.com ,欢迎使用!...

继续访问

Libre密聊——致力于私密聊天的用心APP

我研究了很多私密聊天软件,终于,含泪找到了我的心头所爱:Libre密聊。 微信和QQ,他们的毛病我就不多说了吧,聊天记录给你妥妥的存在服务器,有时候你都已经删除了,还是能通过各种各样的恢复软件给你恢复。更不要提,我们的聊天记录都被js着,偶尔聊点什么都小心翼翼,生怕被查水表。Libre密聊是安全的聊天软件,聊天记录绝不存储在服务器,再也不怕别人偷看你的手机。它的的登录注册也是不需要私人信息的,连手机号码都不需要。现在,2022年了,还有不需要手机号码登录注册的软件,简直是行业之光。 你不相信Libre的

继续访问

微信隐藏功能系列:微信怎么隐藏群聊?告别社死,群聊隐藏

你是否曾经因为不方便的群聊而当场“社死”呢?最新微信隐藏功能可以隐藏群聊,微信怎么隐藏群聊?告别社死,从点进来开始!进来看看这个小功能吧!

继续访问

加密聊天工具介绍

如果你想建立一个群聊,方便有需求的同学共享资源,QQ微信必然不能当做选择,原因嘛众所周知。于是,我专门研究了一番国外常用的群聊软件,打开应用市场,开始漫长又枯燥的试用。其实我的要求并不复杂,具备加密功能,具有QQ一样的群聊功能。说起聊天加密,隐私保护,似乎斯诺登曝光美国菱镜计划后,这个话题开始受到大家的重视。如何保护我们的隐私,如何秘密聊天。要想给聊天加个密,不想被某些公司搜集监控,还是相当容易的...

继续访问

热门推荐 【uni-app】小程序实现微信在线聊天(私聊/群聊)

使用小程序uni-app实现实时聊天功能

继续访问

微信使用教程之修改头像(安卓端,版本6.3.13)

本文主要给那些不太会使用微信的人看的,至于使用的很熟练的就不用看了。 废话不多说,微信修改头像步骤如下(其中个别地方涉及到隐私的地方我给挡住了), 用手机访问的建议先看几遍,然后再操作,或者用别人手机访问,用自己手机操作: 首先当然是登录微信了,登录完毕后一般会到如下页面: 注意看右下角有个半人身符号“我” 点击,进入如下界面: 注意上边有个小图片: 点击这...

继续访问

微信这几个初始设置不用就关了吧,越快越好,不然会泄露我们隐私

微信是我们经常会用到的社交工具,我们几乎每天都会和自己的朋友聊天,但是微信有几个初始设置得调节一下,不然很有可能会泄露我们得隐私。比方说你在朋友圈发的一些图片,就很有可能被不认识的人家加以利用,用来打广告,诈骗等,这样有损你的形象,所以一些设置我们要关闭一下,下面大家一起来看看吧。 1.允许陌生人查看十个照片这个功能要关闭,很重要,所以就放在前面了,我们朋友圈的十条动态,任何人都可以看见的,如果...

继续访问

微信小程序第一次提交审核用户隐私保护指引该怎么写啊?

微信小程序第一次提交审核之 用户隐私保护指引设置 微信小程序新规,提交的时候需要填写这个用户隐私保护指引设置。 参考图片如下: 交流裙:

继续访问

微信上线“密信”新功能:聊天可以加密了?

????????关注后回复“进群”,拉你进程序员交流群????????作者丨okay来源丨扩展迷EXTFANS飞鸽传书的时代,人与人之间进行的通信内容,很容易就能被第三方截获。互联网...

继续访问

微信小程序隐私保护指引设置

今天修改了发布规则,发布前必须填写用户隐私保护指引设置 就是以下内容

继续访问

微信密文聊天新方法,很实用!

Hi 大家好,今天给大家分享简单的密文聊天,只需长按就可以在微信内进行翻译,比较的方便,下面先来看一下效果。 就是这样的代码,不翻译基本看不懂,这里我们长按选择翻译功能,这时候就可以看到隐藏的文字啦。 下面说一下怎样生成这样的文字,这里需要一个小工具,大家在 「一页河山 」 公众号对话框发送 「密文聊天」 进行使用,iOS和安卓都可以。 我们打开后呢,这里只需要输入你要转换的文字,会自动帮你转换好,点击下方的一键加密。 这里会自动将文字进行转换,我们将转换好的复制下来,就可以去使用了,是不是很简单呢?支

继续访问

微信聊天加密大法,再也不怕对象偷看了!

Hi 大家好最近看到有小伙伴问,有没有可以加密聊天的方法,相信很多朋友的聊天内容并不想让别人翻看,今天给大家分享一个可以加密聊天内容的小技巧。下面给大家先看一下效果,就是这样的文字,很难看...

继续访问

微信加密聊天工具(持续开发中)

本项目基于itchat实现的微信加密聊天,可实现对朋友间,微信群好友间的加密通信 加密密钥随机产生,每隔一段时间更换加密密钥 转载于:...

继续访问

新手如何获取积分

如何获取积分 转载 方法一 博客积分是衡量博客水平的重要标准,博客的排名也将按照积分排列。积分规则具体如下: 1、每发布一篇原创或者翻译文章:可获得10分 2、每发布一篇转载文章:可获得2分 3、博主的文章每被评论一次:可获得1分 4、每发表一次评论:可获得1分(自己给自己评论、博主回...

继续访问

JAVA编写的加密解密聊天工具

本实验应用DES,RSA,MD5 等加密算法,以及Socket 套接字实现一个简单的加密解密的聊天工具CryptTalk。本实验的程

用java实现QQ群聊

很久前写的代码了,以前能运行。电脑没装jdk,没试试,自己试一下把。。

---------------服务器------------

import java.awt.*;

import java.awt.event.*;

import java.net.*;

import java.io.*;

import java.util.logging.Level;

import java.util.logging.Logger;

class myframe extends Frame implements ActionListener,WindowListener,Runnable,KeyListener

{

Thread mythread = new Thread(this);

Socket mysocket;

DataInputStream in;

DataOutputStream out;

Label label_ip = new Label("IP");

Label label_port = new Label("Port");

TextField text_ip = new TextField("127.1.1.0",15);

TextField text_port = new TextField("8888",15);

Button button_connect = new Button("连接");

TextArea text_area_show = new TextArea();

TextField text_send = new TextField(45);

Button button_send = new Button("发送");

myframe()

{

Panel panel1 = new Panel();

Panel panel2 = new Panel();

panel1.setLayout(new FlowLayout());

panel1.add(label_ip);

panel1.add(text_ip);

panel1.add(label_port);

panel1.add(text_port);

panel1.add(button_connect);

panel2.setLayout(new FlowLayout());

panel2.add(text_send);

panel2.add(button_send);

add(panel1,BorderLayout.NORTH);

add(text_area_show,BorderLayout.CENTER);

add(panel2,BorderLayout.SOUTH);

text_send.addKeyListener(this);

button_connect.addActionListener(this);

button_send.addActionListener(this);

addWindowListener(this);

this.setTitle("客户端");

setBounds(200,200,400,350);

setVisible(true);

}

public void actionPerformed(ActionEvent e)

{

if(e.getSource() == button_connect)

{

try

{

String ip = null,port = null;

ip = text_ip.getText();

port = text_port.getText();

mysocket = new Socket(ip, Integer.parseInt(port));

in = new DataInputStream(mysocket.getInputStream());

out = new DataOutputStream(mysocket.getOutputStream());

}

catch (UnknownHostException ex)

{

Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex);

}

catch (IOException ex)

{

Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex);

}

mythread.start();

}

if(e.getSource() == button_send)

{

if(mysocket.isConnected() == true)

{

String temp = null;

temp = text_send.getText();

try

{

out.writeUTF(temp);

text_send.setText(null);

}

catch (IOException ex)

{

Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex);

}

}

}

}

public void run()

{

while(true)

{

String temp = null;

try

{

temp = in.readUTF();

}

catch (IOException ex)

{

text_area_show.append("服务器退出\n");

return;

}

temp += "\n";

text_area_show.append(temp);

}

}

public void keyPressed(KeyEvent e)

{

if(e.getKeyCode() == KeyEvent.VK_ENTER)

{

String temp = null;

temp = text_send.getText();

try

{

out.writeUTF(temp);

}

catch (IOException ex)

{

Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex);

}

}

}

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

public void windowOpened(WindowEvent e) {}

public void windowClosed(WindowEvent e) {}

public void windowIconified(WindowEvent e) {}

public void windowDeiconified(WindowEvent e) {}

public void windowActivated(WindowEvent e) {}

public void windowDeactivated(WindowEvent e) {}

public void keyTyped(KeyEvent e) {}

public void keyReleased(KeyEvent e) {}

}

public class mywindow

{

public static void main(String argv[])

{

myframe f = new myframe();

}

}

-----------客户端-----------

import java.net.*;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.swing.*;

class SocketList

{

int length = 0;

Socket socketlist[] = new Socket[10];

SocketList()

{

}

void add(Socket s)

{

if(length == 10)

{

return;

}

socketlist[length] = s;

length++;

}

void Delete(Socket s)

{

int i = 0;

for(i = 0;i length;i++)

{

if(socketlist[i] == s)

{

break;

}

}

for(int j = i;j length;j++)

{

socketlist[j] = socketlist[j + 1];

}

length--;

/*

for(int k = 0;k length;k++)

{

if(socketlist[k].isBound() == true)

{

System.out.print("error");

}

}*/

}

}

class FrameThread extends Thread

{

myframe frame;

FrameThread(myframe f)

{

frame = f;

start();

}

public void run()

{

while(true)

{

InetAddress addr = null;

Socket s = null;

try

{

s = frame.server.accept();

addr = s.getInetAddress();

frame.socketlist.add(s);

for(int i = 0;i frame.socketlist.length;i++)

{

if(frame.socketlist.socketlist[i] != s )

{

DataInputStream in = new DataInputStream(frame.socketlist.socketlist[i].getInputStream());

DataOutputStream out= new DataOutputStream(frame.socketlist.socketlist[i].getOutputStream());

out.writeUTF(addr + "连接到服务器");

}

}

}

catch (IOException ex)

{

Logger.getLogger(FrameThread.class.getName()).log(Level.SEVERE, null, ex);

}

frame.text_area_show.append(addr + "连接到服务器\n");

try

{

frame.list.add(InetAddress.getLocalHost().getHostAddress() + "-" + s.getPort());

}

catch (UnknownHostException ex)

{

Logger.getLogger(FrameThread.class.getName()).log(Level.SEVERE, null, ex);

}

try

{

new ClientThread(s, frame);

}

catch (IOException ex)

{

Logger.getLogger(FrameThread.class.getName()).log(Level.SEVERE, null, ex);

}

}

}

}

class ClientThread extends Thread

{

DataInputStream in = null;

DataOutputStream out = null;

Socket mysocket = new Socket();

myframe frame = null;

InetAddress addr = null;

ClientThread(Socket s,myframe f) throws IOException

{

mysocket = s;

addr = mysocket.getLocalAddress();

frame = f;

in = new DataInputStream(mysocket.getInputStream());

out = new DataOutputStream(mysocket.getOutputStream());

out.writeUTF("成功连接服务器");

start();

}

public void run()

{

while(true)

{

String temp = null;

try

{

temp = in.readUTF();

for(int i = 0;i frame.socketlist.length;i++)

{

DataInputStream in_temp = new DataInputStream(frame.socketlist.socketlist[i].getInputStream());

DataOutputStream out_temp = new DataOutputStream(frame.socketlist.socketlist[i].getOutputStream());

out_temp.writeUTF(addr + "说: " + temp);

}

frame.text_area_show.append(addr + "说: " + temp + "\n");

}

catch (IOException ex)

{

frame.socketlist.Delete(mysocket);

frame.text_area_show.append(addr + "退出服务器\n");

for(int i = 0;i frame.socketlist.length;i++)

{

try

{

DataInputStream in_temp = new DataInputStream(frame.socketlist.socketlist[i].getInputStream());

}

catch (IOException ex1)

{

Logger.getLogger(ClientThread.class.getName()).log(Level.SEVERE, null, ex1);

}

DataOutputStream out_temp = null;

try

{

out_temp = new DataOutputStream(frame.socketlist.socketlist[i].getOutputStream());

}

catch (IOException ex1)

{

Logger.getLogger(ClientThread.class.getName()).log(Level.SEVERE, null, ex1);

}

try

{

out_temp.writeUTF(addr + "退出服务器");

}

catch (IOException ex1)

{

Logger.getLogger(ClientThread.class.getName()).log(Level.SEVERE, null, ex1);

}

}

return;

}

}

}

}

class myframe extends JFrame implements ActionListener,WindowListener,KeyListener

{

List list = new List(16);

TextArea text_area_show = new TextArea(15,40);

TextField text_send = new TextField(50);

Button button_send = new Button("发送");

ServerSocket server = null;

FrameThread thread;

SocketList socketlist = new SocketList();

myframe() throws IOException

{

Panel panel1 = new Panel();

panel1.setLayout(new FlowLayout());

panel1.add(text_area_show);

panel1.add(list);

list.addActionListener(this);

Panel panel2 = new Panel();

panel2.setLayout(new FlowLayout());

panel2.add(text_send);

panel2.add(button_send);

setLayout(new FlowLayout());

add(panel1);

add(panel2);

text_send.addKeyListener(this);

button_send.addActionListener(this);

addWindowListener(this);

server = new ServerSocket(8888);

thread = new FrameThread(this);

setTitle("服务器");

setBounds(200,200,450,330);

setVisible(true);

}

public void actionPerformed(ActionEvent e)

{

if(e.getSource() == list)

{

text_area_show.append(list.getSelectedItem() + "\n");

}

if(e.getSource() == button_send)

{

for(int i = 0;i socketlist.length;i++)

{

try

{

DataInputStream in = new DataInputStream(socketlist.socketlist[i].getInputStream());

}

catch (IOException ex)

{

Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex);

}

DataOutputStream out = null;

try

{

out = new DataOutputStream(socketlist.socketlist[i].getOutputStream());

}

catch (IOException ex)

{

Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex);

}

try

{

out.writeUTF(text_send.getText());

text_send.setText(null);

// text_area_show.append(text_send.getText() + "\n");

}

catch (IOException ex)

{

Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex);

}

}

}

}

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

public void windowOpened(WindowEvent e) {}

public void windowClosed(WindowEvent e) {}

public void windowIconified(WindowEvent e) {}

public void windowDeiconified(WindowEvent e) {}

public void windowActivated(WindowEvent e) {}

public void windowDeactivated(WindowEvent e) {}

public void keyTyped(KeyEvent e) {}

public void keyPressed(KeyEvent e)

{

if(e.getKeyCode() == KeyEvent.VK_ENTER)

{

for(int i = 0;i socketlist.length;i++)

{

try

{

DataInputStream in = new DataInputStream(socketlist.socketlist[i].getInputStream());

}

catch (IOException ex)

{

Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex);

}

DataOutputStream out = null;

try

{

out = new DataOutputStream(socketlist.socketlist[i].getOutputStream());

}

catch (IOException ex)

{

Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex);

}

try

{

out.writeUTF(text_send.getText());

text_area_show.append(text_send.getText() + "\n");

}

catch (IOException ex)

{

Logger.getLogger(myframe.class.getName()).log(Level.SEVERE, null, ex);

}

}

}

}

public void keyReleased(KeyEvent e) {}

}

public class mywindow

{

public static void main(String argv[]) throws IOException

{

myframe f = new myframe();

}

}

关于javaitchat和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。