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通信之聊天室功能 的全部内容, 来源链接: utcz.com/z/348299.html

回到顶部