java简单聊天代码

来源:互联网 发布:斧子演示 mac 编辑:程序博客网 时间:2024/06/07 12:59
客户端:package com.dada.handlefile;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.Socket;/** * @author dada * 客户端 */public class Client {public static void main(String[] args) throws Exception, IOException {Socket sClient = new Socket("localhost", 9999);InputStream is = sClient.getInputStream();DataInputStream dis = new DataInputStream(is);OutputStream os = sClient.getOutputStream();DataOutputStream dos = new DataOutputStream(os);new ClientReader(dis).start();new ClientWriter(dos).start();}}/** * @author dada * 客户端读取类 */class ClientReader extends Thread {DataInputStream dis;public ClientReader(DataInputStream dis) {super();this.dis = dis;}@Overridepublic void run() {String info;while (true) {try {info = dis.readUTF();System.out.println("对方说: " + info);if (info.equals("bye")) {System.out.println("对方下线");System.exit(0);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}/** * @author dada * 客户端写出类 */class ClientWriter extends Thread {DataOutputStream dos;public ClientWriter(DataOutputStream dos) {this.dos = dos;}@Overridepublic void run() {String info;InputStreamReader isr = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(isr);while (true) {try {info = br.readLine();dos.writeUTF(info);if (info.equals("bye")) {System.out.println("自己下线");System.exit(0);}} catch (IOException e) {e.printStackTrace();}}}}服务器端:package com.dada.handlefile;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;/** * @author dada *服务器端 */public class Server {public static void main(String[] args) throws Exception {//实例化一个服务器端的socket实例ServerSocket ss = new ServerSocket(9999);Socket sServer = ss.accept();//获取输入流InputStream is = sServer.getInputStream();//封装DataInputStream是因为它可以以UTF的格式读取数据DataInputStream dis = new DataInputStream(is);//获取输出流OutputStream os = sServer.getOutputStream();//封装DataInputStream是因为它可以以UTF的格式读取数据DataOutputStream dos = new DataOutputStream(os);new ServerReader(dis).start();new ServerWriter(dos).start();}}/** * @author Administrator *这个类主要是用来提供从服务器端的流读取数据的 */class ServerReader extends Thread {DataInputStream dis;public ServerReader(DataInputStream dis) {this.dis = dis;}@Overridepublic void run() {String info;while (true) {try {info = dis.readUTF();System.out.println("对方说: " + info);if (info.equals("bye")) {System.out.println("对方下线: ");System.exit(0);}} catch (IOException e) {e.printStackTrace();}}}}/** * @author Administrator *这个方法主要是提供从服务器端向外写数据服务的 */class ServerWriter extends Thread {DataOutputStream dos;public ServerWriter(DataOutputStream dos) {super();this.dos = dos;}@Overridepublic void run() {String info;InputStreamReader isr = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(isr);while (true) {try {info = br.readLine();dos.writeUTF(info);if (info.equals("bye")) {System.out.println("自动退出!");System.exit(0);}} catch (IOException e) {e.printStackTrace();}}}}


 

原创粉丝点击