软件编程
位置:首页>> 软件编程>> java编程>> Java Socket通信之聊天室功能

Java Socket通信之聊天室功能

作者:LY_624  发布时间:2022-02-04 11:47:35 

标签:Java,Socket,聊天室

本文实例为大家分享了Java Socket聊天室功能的具体代码,供大家参考,具体内容如下

Client.java


import java.io.*;
import java.net.*;
import java.util.*;

public class Client {
public int port = 8083;
Socket socket = null;

public static void main(String[] args) {
 new Client(); //开始执行
}

public Client() {

try {
  socket = new Socket("127.0.0.1", port);
  new Cthread().start();

BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  String msg1;
  while ((msg1 = br.readLine()) != null) {
   System.out.println(msg1);
  }
 } catch (Exception e) {
 }
}

class Cthread extends Thread {

public void run() {
  try {

BufferedReader re = new BufferedReader(new InputStreamReader(System.in));
   PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);
   String msg2;

while (true) {

msg2 = re.readLine();
    pw.println(msg2);
   }
  } catch (Exception e) {
   e.printStackTrace();
  }

}
}

}

Server.java


import java.net.*;
import java.io.*;
import java.util.*;

public class Server {
 int port;
 List<Socket> clients;
 ServerSocket server;
 public Server() {
   try {
     port = 8083;
     clients = new ArrayList<Socket>();
     server = new ServerSocket(port);
     System.out.println("服务器已启动");
     int co=1;
     while (true) {
       Socket socket = server.accept();
       clients.add(socket);
       Mythread mythread = new Mythread(socket,co);
       co++;
       mythread.start();
     }

} catch (Exception ex) {
     System.out.println("vv");
   }
 }

public static void main(String[] args) {
   new Server();
 }

class Mythread extends Thread {
   Socket ssocket;
   private int count;
   private BufferedReader br;
   private PrintWriter pw;
   public String msg;

public Mythread(Socket s,int c) {
     ssocket = s;
     count=c;
   }

public void run() {

try {
       br = new BufferedReader(new InputStreamReader(ssocket.getInputStream()));

msg = "欢迎【" +"Client "+count + "】进入聊天室!当前聊天室有【" + clients.size() + "】人";

sendMsg();

while ((msg = br.readLine()) != null) {

msg = "【" +"Client "+count + "】说:" + msg;
         sendMsg();

}
     } catch (Exception ex) {
     }
   }
   public void sendMsg() {
     try {
       System.out.println(msg);

for (int i = clients.size() - 1; i >= 0; i--) {
         pw = new PrintWriter(clients.get(i).getOutputStream(), true);
         pw.println(msg);
         pw.flush();
       }
     } catch (Exception ex) {
     }
   }
 }

}

运行结果:

Java Socket通信之聊天室功能

Java Socket通信之聊天室功能

来源:http://blog.csdn.net/LY_624/article/details/53784612

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com