`
pan_java
  • 浏览: 285566 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java socket 多线程处理

    博客分类:
  • java
阅读更多
public class MallShopSoketServer implements Runnable {

	private static Logger logger = Logger.getLogger(MallShopSoketServer.class);

	private int port = 8821;
	private ServerSocket serverSocket;
	private ExecutorService executorService;// 线程池
	private final int POOL_SIZE = 10;// 单个CPU线程池大小

	public MallShopSoketServer() {
		try {
			serverSocket = new ServerSocket(port);
		} catch (Exception e) {

			logger.error(e);
		}
		executorService = Executors.newFixedThreadPool(POOL_SIZE);
		logger.info("商城Sokect Server 启动,端口:" + port);
	}

	
	
	public void run() {
		try {
			while (true) {
				Socket socket = null;
				// 接收客户连接,只要客户进行了连接,就会触发accept();从而建立连接
				socket = serverSocket.accept();
				executorService.execute(new MallShopHandler(socket));
			}
		} catch (Exception e) {
			logger.error(e);
		}
	}

}




/**
 * 商城信息处理器
 * 
 * @author panxiuyan
 * 
 */
public class MallShopHandler implements Runnable {

	private Logger logger = Logger.getLogger(MallShopHandler.class);

	private Socket socket;

	public MallShopHandler(Socket socket) {
		this.socket = socket;
	}

	/**
	 * 获取Socket 输入流
	 * 
	 * @param socket
	 * @return
	 * @throws IOException
	 */
	private PrintWriter getWriter(Socket socket) throws IOException {
		OutputStream socketOut = socket.getOutputStream();
		return new PrintWriter(socketOut, true);
	}

	/**
	 * 获取socket 输出流
	 * 
	 * @param socket
	 * @return
	 * @throws IOException
	 */
	private BufferedReader getReader(Socket socket) throws IOException {
		InputStream socketIn = socket.getInputStream();
		return new BufferedReader(new InputStreamReader(socketIn));
	}

	public void run() {
		try {
			logger.info("New connection accepted " + socket.getInetAddress()
					+ ":" + socket.getPort());
			BufferedReader br = getReader(socket);
			PrintWriter pw = getWriter(socket);
			String msg = br.readLine();
			pw.println(doMsg(msg));
		} catch (IOException e) {
			logger.error(e);
		} finally {
			try {
				if (socket != null)
					socket.close();
			} catch (IOException e) {
				logger.error(e);
			}
		}
	}

	/**
	 * 处理信息
	 * 
	 * @param msg
	 * @return
	 */
	public String doMsg(String msg) {
		.................

	}

}
分享到:
评论

相关推荐

    java Socket 多线程

    总结来说,Java Socket多线程是构建高并发网络服务的关键技术。通过合理地设计和实现,可以有效地提升服务器的并发处理能力,为用户提供更高效的服务。在实际项目中,应根据具体需求选择适合的线程模型,例如线程池...

    java socket多线程处理框架SocketServer

    客户端的请求首先会进入请求队列,处理器线程池会向请求队列获取请求并且分配分配处理器,每个处理器...处理器可以指定interceptor,处理逻辑都实现在ResponseHandler中。空闲时,处理器线程会休眠直到有新的请求到来

    java socket多线程文件传输实例项目

    Java Socket多线程文件传输实例项目是一个典型的网络编程应用场景,主要涉及了Socket编程、多线程处理以及文件I/O操作等关键知识点。在这个项目中,开发者利用Java的Socket API实现了一个能够支持多个客户端同时进行...

    java socket 多线程实例

    在这个“Java Socket 多线程实例”中,我们将会探讨如何结合这两个关键概念来创建一个聊天服务器和客户端应用。 首先,`ChatServer.java` 文件通常包含了服务器端的代码。在Java中,通过`java.net.ServerSocket` 类...

    java socket 多线程 简易实现

    Java Socket多线程简易实现是网络编程中的一个基础概念,主要应用于客户端与服务器之间的通信。在Java中,Socket是基于TCP协议的,提供了一种可靠的、面向连接的字节流通信方式。多线程则是Java并发编程的重要特性,...

    java socket多线程聊天

    Java Socket多线程聊天软件是基于Java编程语言构建的一个网络通信应用,主要利用Socket API来实现客户端与服务器之间的实时通信。在这个系统中,服务器端能够同时处理多个客户端连接,这得益于Java的多线程特性。SWT...

    java socket 多线程并发控制 hibernate mysql

    总的来说,本项目结合了Java的Socket通信、多线程并发控制、Hibernate ORM以及MySQL数据库,构建了一个能处理并发网络请求并存储信息的系统。这样的设计使得系统具备良好的扩展性和健壮性,能够高效地服务大量用户。...

    java socket多线程多人聊天室

    本项目"java socket多线程多人聊天室"旨在利用Java的Socket API创建一个支持多个客户端同时连接的聊天环境。在这个项目中,主要涉及三个关键组件:Server(服务器)、Client(客户端)和User(用户)。 首先,`...

    java socket多线程文件上传下载实例项目

    Java Socket多线程文件上传下载实例项目是一种基于Java网络编程技术实现的,旨在处理大量并发连接的文件传输服务。在本项目中,Socket是客户端与服务器之间通信的基础,它允许两个应用程序通过网络交换数据。多线程...

    java socket通讯例程 多线程读写 可以同时收发不同终端的消息

    在主线程中通过控制台读取键盘...服务器在收到一个socket连接之后,把该socket保存到队列中,并对队列中的每个socket开启各自的读写线程。测试可以在不同控制台运行server和client,服务器接收消息时,会显示消息来源

    java socket 多线程网络传输多个文件

    java socket 多线程网络传输多个文件

    Java Socket多线程实例及文档

    本文将深入探讨Java Socket多线程的应用,并通过实例解析其工作原理。 一、Java Socket基础 Java Socket类代表了TCP协议中的一个连接,Socket对象由服务器端的ServerSocket监听并接受客户端的连接请求后创建。...

    java socket 多线程通讯示例

    总的来说,Java Socket多线程通信是一种强大的工具,用于构建分布式系统和网络应用。理解如何创建和管理Socket连接,以及如何在多线程环境下处理这些连接,是成为熟练的Java网络程序员的关键步骤。通过实践和理解...

    Java Socket学习---单线程阻塞

    为了提高效率,可以采用多线程或者非阻塞I/O(如NIO,Java的新I/O库)来改进。但是,对于初学者来说,理解单线程阻塞模型是学习网络编程的基础,有助于深入理解Socket通信的工作原理。 此外,源码分析可以帮助我们...

    java,socket多线程一对一聊天

    在本项目"java,socket多线程一对一聊天"中,我们探讨的是如何使用Java的Socket库来实现一个简单的、一对一的聊天应用。由于描述中提到“暂不支持并发”,我们可以理解这个系统可能只处理单个连接,而不是同时处理多...

    java socket多线程通信案例

    基于多线程实现的JavaSocket客户端-服务端点对点异步通信程序代码

    java Socket多线程通讯实例

    总结起来,Java Socket多线程通讯实例展示了如何利用Java的网络编程API实现TCP通信,并通过多线程处理并发连接,这在构建例如QQ这样的聊天应用时是非常重要的技术。通过这种方式,服务端能够有效地管理大量并发的...

    java_Socket多线程服务器源代码介绍

    ### Java Socket多线程服务器源代码介绍 #### 一、Java Socket基础知识 在开始之前,我们先了解一下Java Socket的基本概念。Socket是一种用于网络通信的技术,它允许不同计算机上的应用程序通过网络进行通信。Java...

    Java Socket 多线程通信

    Java Socket 多线程通信是网络编程中的一个重要概念,它涉及到Java的基础网络API以及多线程技术。在Java中,Socket是实现客户端-服务器通信的基础,而多线程则允许程序同时处理多个任务,这对于构建能够同时服务多个...

Global site tag (gtag.js) - Google Analytics