JAVA简单多线程一对一聊天

来源:互联网 发布:linux 驱动 编辑:程序博客网 时间:2024/04/30 02:23
//发送消息的线程package 实验1;import java.io.BufferedWriter;import java.io.IOException;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.Socket;import java.util.Scanner;public class SendThread extends Thread{private Socket send;public SendThread(Socket send){this.send = send;}public void run() {OutputStream os;try {while(true){os = send.getOutputStream();OutputStreamWriter osw = new OutputStreamWriter(os);BufferedWriter bw = new BufferedWriter(osw);PrintWriter pw = new PrintWriter(bw);Scanner sc = new Scanner(System.in);String send = sc.nextLine();if(!send.equalsIgnoreCase("exit")){pw.println(send);pw.flush();}}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
//接收消息的线程package 实验1;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.Socket;public class ReciveThread extends Thread{private Socket recive;public ReciveThread(Socket recive){this.recive = recive;}public void run() {InputStream is;try {while(true){is = recive.getInputStream();InputStreamReader isr = new InputStreamReader(is);BufferedReader br = new BufferedReader(isr);String recive = br.readLine();System.out.println(recive);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

//客户端充当 用户1package 实验1;import java.io.IOException;import java.net.Socket;import java.net.UnknownHostException;public class Client {public static void main(String[] args) {try {Socket s = new Socket("localhost",55555);SendThread se = new SendThread(s);ReciveThread re = new ReciveThread(s);se.start();re.start();} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}

//服务器端充当 用户2package 实验1;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class Server {public static void main(String[] args) {try {ServerSocket ss = new ServerSocket(55555);Socket s = ss.accept();SendThread se = new SendThread(s);ReciveThread re = new ReciveThread(s);se.start();re.start();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}



0 0
原创粉丝点击