双向同步聊天小程序[ByJavaOnLinux]实现代码

高洛峰
发布: 2017-03-24 14:01:48
原创
2279人浏览过

一个很简单的网络聊天小工具,java实现,双向同步发送信息,功能增加中
局域网内ip请自行更改,只要变更client端的localhost ip为另一台pc的ip就行

import java.io.*;
import java.net.Socket;
import java.net.ServerSocket;
import java.net.SocketException;
public class TestServer {
        public static void main(String[] args) {
                try {
                        //open the communication port for messenge-transfer
                        //server socket id:8888
                        ServerSocket s = new ServerSocket(8888);
                        //create socket instance and set it be waiting state to accept data
                        Socket s1 = s.accept();
                        //original data stream
                        InputStream is = s1.getInputStream();
                        OutputStream os = s1.getOutputStream();
                        
                        DataOutputStream dos = new DataOutputStream(os);
                        DataInputStream dis = new DataInputStream(is);
                        System.out.println("Server started!");
                        new MyServerReader(dis).start();
                        new MyServerWriter(dos).start();
                } catch (IOException ioe) {
                        ioe.printStackTrace();
                }
        }
}
class MyServerReader extends Thread {
        private DataInputStream dis;
        public MyServerReader(DataInputStream dis) {
                this.dis = dis;
        }
        public void run() {
                String info;
                try {
                        while (true) {
                                info = dis.readUTF();
                                System.out.println("Ta said:" + info);
                                if (info.equals("bye") || info.equals("88")) {
                                        System.out.println("Ta offline, connection's out!");
                                        System.exit(0);
                                }
                        }
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }
}
class MyServerWriter extends Thread {
        private DataOutputStream dos;
        public MyServerWriter (DataOutputStream dos) {
                this.dos = dos;
        }
        public void run() {
                String info;
                InputStreamReader isr = new InputStreamReader(System.in);
                BufferedReader br = new BufferedReader(isr);
                try {
                        while (true) {
                                info = br.readLine();
                                dos.writeUTF(info);
                                if (info.equals("bye") || info.equals("88")) {
                                        System.out.println("Local machine Offline, application exit!");
                                        System.exit(0);
                                }
                        }
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }
}
登录后复制

client端的:

import java.io.*;
import java.net.Socket;
import java.net.SocketException;
public class TestClient {
        public static void main (String[] args) {
                try {
                        Socket s1 = new Socket("127.0.0.1", 8888);
                        InputStream is = s1.getInputStream();
                        OutputStream os = s1.getOutputStream();
                        DataInputStream dis = new DataInputStream(is);
                        DataOutputStream dos = new DataOutputStream(os);
                        new MyClientReader(dis).start();
                        new MyClientWriter(dos).start();
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }
}
class MyClientReader extends Thread {
        private DataInputStream dis;
        public MyClientReader(DataInputStream dis) {
                this.dis = dis;
        }
        public void run() {
                String info;
                try {
                        while (true) {
                                info = dis.readUTF();
                                System.out.println("Ta said:" + info);
                                if (info.equals("bye") || info.equals("88")) {
                                        System.out.println("Ta offline, connection's out!");
                                        System.exit(0);
                                }
                        }
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }
}
class MyClientWriter extends Thread {
        private DataOutputStream dos;
        public MyClientWriter (DataOutputStream dos) {
                this.dos = dos;
        }
        public void run() {
                String info;
                InputStreamReader isr = new InputStreamReader(System.in);
                BufferedReader br = new BufferedReader(isr);
                try {
                        while (true) {
                                info = br.readLine();
                                dos.writeUTF(info);
                                if (info.equals("bye") || info.equals("88")) {
                                        System.out.println("Local machine Offline, application exit!");
                                        System.exit(0);
                                }
                        }
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }
}
登录后复制

以上就是双向同步聊天小程序[ByJavaOnLinux]实现代码的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号