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

📄 jimserver.java

📁 一个使用Java实现的类似与QQ的聊天程序。使用了Hibernate组建。可用于学习Java网络编程和Hiberante数据库组件的学习
💻 JAVA
字号:
package com.jim.server;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;

import org.apache.log4j.Logger;

import com.jim.net.Connection;


public class JIMServer {
	/**
	 * 一个持有了和所有用户的连接HashMap。当用户成功登录时就
	 * 将用户和服务器的连接以用户的登录号码为key放入这个HashMap中。
	 * 当用户注销时就移除该用户和服务器之间的连接。
	 */
	protected static HashMap<Integer,Connection> connections = new HashMap<Integer,Connection>();
	/**
	 * 保存了服务器端和客户端交互的所有线程。只要有一个连接经来就
	 * 新创建一个线程并运行。知道用户退出,这个线程才结束。
	 */
	protected static HashMap<String,Thread> serverThreads = new HashMap<String,Thread>();
	/**
	 * 这个ServerSocket专门负责接收客户端的连接,并返回一个Socket
	 */
	private static ServerSocket controller;
	/**
	 * 用于为线程命名。
	 */
	private static int thCount = 0;
	/**
	 * 负责日志的处理。便于调试。
	 */
	private static Logger log = Logger.getLogger(JIMServer.class);
	/**
	 * 默认的服务器端口。
	 */
	private static int port = 9001;
	
	
	public static void main(String[] args){
		try {
			//实例化这个ServerSocket
			controller = new ServerSocket(port);
			log.info("server start. waiting connection on port" + port);
			//这里使用一个无限循环来不断的接收客户端的连接
			while(true){
				//等待一个客户端传入的连接,主线程阻塞在这里。
				Socket s = controller.accept();
				log.info("get a socket connection in server: "+s);
				//创建一个连接对象。
				Connection con = new Connection(s);
				con.setBusy(false);
				//创建一个新的响应线程。
				ServerThread sTh = new ServerThread(con,connections);
				sTh.setName("ServerThread_"+ (thCount++));
				serverThreads.put(sTh.getName(), sTh);
				sTh.start();
				log.info("a new server thread started :"+sTh.getName());
			}
		} catch (IOException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

⌨️ 快捷键说明

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