简易聊天工具

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Person1 extends JFrame{
    private static JTextArea p1ta;
    private JTextField p1tf;
    private JButton p1b;

    //构造方法
    public Person1() {
        super("小明");
    }
    public void init1() {
        this.setLayout(null);
        p1ta = new JTextArea();
        p1tf = new JTextField();
        p1b = new JButton("发送");
        p1ta.setBounds(0, 0, 500, 300);
        p1tf.setBounds(0, 315, 400, 50);
        p1b.setBounds(420, 320, 60, 40);
        buttonLisenter();

        this.add(p1ta);
        this.add(p1tf);
        this.add(p1b);
        this.setSize(500, 400);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
    public JTextArea getP1ta() {
        return p1ta;
    }
    //按钮监听器
    private void buttonLisenter() {
        p1b.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                String str = p1tf.getText();
                p1tf.setText("");
                p1ta.append("我:"+"\r\n"+str + "\r\n");
                try {
                    Socket soc = new Socket(InetAddress.getLocalHost(),8888);
                    OutputStream ots = soc.getOutputStream();
                    PrintStream ps = new PrintStream(ots);
                    ps.print(str+"\r\n");
                    ps.close();
                    ots.close();
                } catch (UnknownHostException e1) {
                    e1.printStackTrace();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
        });
    }

    //测试类
    public static void main(String[] args) {
        Person1 p1 = new Person1();
        p1.init1();
        Thread t1 = new Thread(new RunableP1(p1ta));
        t1.start();
    }
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Person2 extends JFrame{
    private static JTextArea p2ta;
    private JTextField p2tf;
    private JButton p2b;

    public void init2() {

        this.setLayout(null);
        p2ta = new JTextArea();
        p2tf = new JTextField();
        p2b = new JButton("发送");
        p2ta.setBounds(0, 0, 500, 300);
        p2tf.setBounds(0, 315, 400, 50);
        p2b.setBounds(420, 320, 60, 40);
        buttonLisenter();
        this.add(p2ta);
        this.add(p2tf);
        this.add(p2b);
        this.setSize(500, 400);
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);

    }
    public JTextArea getP2ta() {
        return p2ta;
    }
    //无参构造
    public Person2() {
        super("小芳");
    }
    //按钮监听器
        private void buttonLisenter() {
            p2b.addActionListener(new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent e) {
                    String str = p2tf.getText();
                    p2tf.setText("");
                    p2ta.append("我:"+"\r\n"+str + "\r\n");
                    try {
                        Socket soc = new Socket(InetAddress.getLocalHost(),9999);
                        OutputStream ots = soc.getOutputStream();
                        PrintStream ps = new PrintStream(ots);
                        ps.print(str+"\r\n");
                        ps.close();
                        ots.close();
                    } catch (UnknownHostException e1) {
                        e1.printStackTrace();
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
                }
            });
        }

    //测试类
    public static void main(String[] args) {
        Person2 p2 = new Person2();
        p2.init2();
        Thread t2 = new Thread(new RunableP2(p2ta));
        t2.start();
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JTextArea;
public class RunableP1 implements Runnable{
    private JTextArea p1ta;
    public RunableP1(JTextArea p1ta) {
        this.p1ta = p1ta;
    }
    @Override
    public void run() {
        ServerSocket ss;
        try {
                ss = new ServerSocket(9999);
                while(true){
                Socket sk = ss.accept();
                InputStream is = sk.getInputStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(is));
                p1ta.append("小芳:\r\n"+br.readLine()+ "\r\n");
                br.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JTextArea;
public class RunableP2 implements Runnable{
    private JTextArea p2ta;
    public RunableP2(JTextArea p2ta) {
        this.p2ta = p2ta;
    }
    @Override
    public void run() {
        ServerSocket ss;
        try {
                ss = new ServerSocket(8888);
                while(true){
                Socket sk = ss.accept();
                InputStream is = sk.getInputStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(is));
                p2ta.append("小明:\r\n"+br.readLine()+ "\r\n");
                br.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.ServerSocket;

import java.net.Socket;

import javax.swing.JTextArea;

public class RunableP2 implements Runnable{

private JTextArea p2ta;

public RunableP2(JTextArea p2ta) {

this.p2ta = p2ta;

}

@Override

public void run() {

ServerSocket ss;

try {

ss = new ServerSocket(8888);

while(true){

Socket sk = ss.accept();

InputStream is = sk.getInputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(is));

p2ta.append("小明:\r\n"+br.readLine()+ "\r\n");

br.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

时间: 2024-10-08 08:02:36

简易聊天工具的相关文章

RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本━新增企业通(内部简易聊天工具)

RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本 新增企业通(内部简易聊天工具) RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案. "企业通"是RDIFramework.NET框架提供的一个即时通讯.内部聊天沟通的工具.虽不能与商业化专业的沟通工具相比,但对于框架内部进行消息的沟通还是比较方便的.成功登录框架后,点击框架主菜单"辅助工具"→"企业通&

(18)c++项目练习一(功能会不断扩展)--------【聊天工具】

1.准备使用Qt和C++做一个远程(基于互联网的)聊天工具,需要实现以下功能 (1)多对多聊天功能 (2)文件传输功能 (3)注册.登录功能 (4)加好友.同意好友功能 (5)好友列表.黑名单功能(分组功能) (6)语音聊天功能 (7)表情发送功能 2.UML类图设计

javadoc简易数组工具类文档(API)

制作简易数组工具类文档(API) 如何创建文档 以数组工具类(Array)为例一丶创建一个数组工具类  要求实现(1)遍历数组(2)求数组中的最大值(3)查询数组中的元素在数组中第一次出现的索引(4)将数组元素翻转并遍历 /** * 这是数组的一个工具类 * @author Apple * @version V1.0 * */ public class Array{  private Array(){ //将无参构造私有化,无法实例化  }    /**遍历数组  * @param arr :需

php+websocket搭建简易聊天室实践

1.前言 公司游戏里面有个简单的聊天室,了解了之后才知道是node+websocket做的,想想php也来做个简单的聊天室.于是搜集各种资料看文档.找实例自己也写了个简单的聊天室. http连接分为短连接和长连接.短连接一般可以用ajax实现,长连接就是websocket.短连接实现起来比较简单,但是太过于消耗资源.websocket高效不过兼容存在点问题.websocket是html5的资源 如果想要详细了解websocket长连接的原理请看https://www.zhihu.com/ques

Web版的各种聊天工具

直到近期为止,我们经常使用的即时聊天工具(QQ.msn等)了Web版,大家不用下载庞大软件,直接打开网页就能够与自己的好友聊天,非常方便.在此将时汇总 ?????? 便于大家查找 ?????? 节约大家一点时间 此都是官方站点 ?????? 请大家放心使用: 1.先说我们最经常使用的QQ 在线聊天Web版地址: http://webqq.qq.com/ (刚建的 ?????? 现正在測试 ?????? 须要申请 ?????? 日前还不太稳定 ?????? 有待完好) 2.msn在线聊天Web版地

Oracle简易界面工具 (Oracle 10g, Oracle 11g)

Oracle简易界面工具 背景:偶在远程机上干活,须要调用到 Oracle 11gserver的数据,远程机上已安装Oracle client, 但 sql plus 和 sql developer 及 pl sql developer 都不能用 (DBA折腾几天都没解决).偶 有server的ip, oracleusername及password:知道部分表名及字段名. 因时间紧,偶仅仅好自己写一个简易的界面工具来应急. 演示效果:     演示下载: http://pan.baidu.com

ios开发xmpp仿微信即时聊天工具

最近在做一个项目,需要一个即时聊天工具,先打算有第三方环信(http://www.easemob.com),但是最终老板不允许,要自己开发用自己的服务器,哎!如果有需要的可以去看看这个环信,真的不错.进入今天的主题,其实也是大神们开发的,我在这只是把一些细节理一下让大家你能少走一点弯路,需要的资料和源码这里面都有http://pan.baidu.com/s/1nt5esnn. 详细的介绍看这http://blog.csdn.net/kangx6/article/details/7740135,看

关于Socket编写简单聊天工具的总结(原创)

这段时间再看socket编程,虽然现在是刚刚接触,但是还是忍不住想写一篇总结,来激励自己努力学习,写的不好的地方,还请大家指教啊! 下面针对一个简单的发送消息和文件的程序说说吧.   首先是服务器需要准备二个Socket和二个Thread如下: //和客户机进行通信 private Socket sckCommit; //监听客户机 private Socket sckListen; private Thread thdListen; private Thread thdCommit; 对客户机

基于文件形式的聊天工具

前因 由于在甲方公司领导要求,在上班时禁止一切的聊天工具的出现.各种封IM软件或者端口.但是开发人员和测试人员相隔半天街,所以,一直想整个简单且不用网络的聊天的工具. 思索半天,遇到以下问题: 我们方的IP地址和甲方人员的不是同网段的 每次交流,除了邮件,就是靠吼 几个人用的系统有几种:xp,win8, win7, mac 网段不一样,某些内网,我们外部不能访问 有以下共同点: 都可以访问某个服务器(因为得时不时看下测试日志) 都会基础的Linux命令 简单,又不用网络的,到底可以做神马呢? 就