⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.java

📁 基于Java实现的聊天室功能
💻 JAVA
字号:
/*
 * Created on 2007.12.25.
 */
package conferenceroom;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;

/**
 * User info.
 * @author 刘佳
 */
public class Server extends Thread {
	public static Server instance = null;
	

	private int serverPort = 6543;
	private Channel channel = new Channel();
	private boolean useServer = false;

	private Server() {
		try {
			serverPort = 6543;
		} catch (NumberFormatException e) {
			e.printStackTrace();
		}
		useServer = true;

		if (useServer) {
			this.setDaemon(true);
			this.start();
		}
	}

	public static void initialize() {
		if (instance == null) {
			instance = new Server();
		}
	}

	public static int getServerPort() {
		if (instance == null) {
			initialize();
		}
		return instance.serverPort;
	}

	public static boolean isUseServer() {
		if (instance == null) {
			initialize();
		}
		return instance.useServer;
	}
	
	public Channel getChannel(){
		return channel;
	}

	public void run() {

		final ServerSocket serverSocket;
		try {
			serverSocket = new ServerSocket(serverPort);
		} catch (IOException e) {
			System.out.println("Server Socket Create Exception... : " + e);
			e.printStackTrace();
			return;
		}
		System.out.println("Server listening....");

		while (true) {
			try {
				Thread t = new Thread() {
					Socket client_connection = serverSocket.accept();
					public void run() {
						try {
							InputStream input =
								client_connection.getInputStream();
							OutputStream output =
								client_connection.getOutputStream();
							BufferedReader rd =
								new BufferedReader(
									new InputStreamReader(input));
							String line = rd.readLine();
							HashMap<String,String> header = new HashMap<String,String>();
							do {
								line = rd.readLine();
								if (line.length() == 0) {
									break;
								}
								int idx = line.indexOf(":");
								if (idx >= 0) {
									String name = line.substring(0, idx).trim();
									String value =
										line.substring(idx + 1).trim();
									header.put(name, value);
									System.out.println(name+":"+value);
								} else {
									System.err.println(
										"Unknown header : " + line);
								}
							} while (true);
							String roomid =  header.get("Roomid");
							String roomname = header.get("Roomname");
							String userid = header.get("Userid");
							String username = header.get("Username");
							User user = new User(userid,username,output);
							Communicator c = new Communicator();
							c.service(user, roomid,roomname, input);
						} catch (IOException e) {
							e.printStackTrace();
						} finally {
							if (client_connection != null) {
								try {
									client_connection.close();
								} catch (IOException e1) {
									e1.printStackTrace();
								}
							}
						}
					}
				};
				t.setDaemon(true);
				t.start();
			} catch (IOException e) {
				System.out.println("Client IO Exception... : " + e);
				e.printStackTrace();
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -