- 浏览: 342971 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
yin_bp:
不建议使用session复制机制,推荐bboss会话共享框架, ...
JBOSS7 集群和Session复制配置笔记 -
heipacker:
建议:java(多线程)实现高性能数据同步==>java ...
java(多线程)实现高性能数据同步 -
yang_min:
582399232 写道你的脚本貌似不能用呀?service ...
JBOSS7学习笔记 -
yang_min:
582399232 写道感觉这个脚本不好#shutdown=' ...
JBOSS7学习笔记 -
yang_min:
582399232 写道博主能问几个问题吗?1.按照你的步骤执 ...
JBOSS7 集群和Session复制配置笔记
1.服务端
2.客户端
package sterning; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.*; import java.util.concurrent.*; public class MultiThreadServer { private int port=8821; private ServerSocket serverSocket; private ExecutorService executorService;//线程池 private final int POOL_SIZE=10;//单个CPU线程池大小 public MultiThreadServer() throws IOException{ serverSocket=new ServerSocket(port); //Runtime的availableProcessor()方法返回当前系统的CPU数目. executorService=Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()*POOL_SIZE); System.out.println("服务器启动"); } public void service(){ while(true){ Socket socket=null; try { //接收客户连接,只要客户进行了连接,就会触发accept();从而建立连接 socket=serverSocket.accept(); executorService.execute(new Handler(socket)); } catch (Exception e) { e.printStackTrace(); } } } public static void main(String[] args) throws IOException { new MultiThreadServer().service(); } } class Handler implements Runnable{ private Socket socket; public Handler(Socket socket){ this.socket=socket; } private PrintWriter getWriter(Socket socket) throws IOException{ OutputStream socketOut=socket.getOutputStream(); return new PrintWriter(socketOut,true); } private BufferedReader getReader(Socket socket) throws IOException{ InputStream socketIn=socket.getInputStream(); return new BufferedReader(new InputStreamReader(socketIn)); } public String echo(String msg){ return "echo:"+msg; } public void run(){ try { System.out.println("New connection accepted "+socket.getInetAddress()+":"+socket.getPort()); BufferedReader br=getReader(socket); PrintWriter pw=getWriter(socket); String msg=null; while((msg=br.readLine())!=null){ System.out.println(msg); pw.println(echo(msg)); if(msg.equals("bye")) break; } } catch (IOException e) { e.printStackTrace(); }finally{ try { if(socket!=null) socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }
2.客户端
package sterning; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class MultiThreadClient { public static void main(String[] args) { int numTasks = 10; ExecutorService exec = Executors.newCachedThreadPool(); for (int i = 0; i < numTasks; i++) { exec.execute(createTask(i)); } } // 定义一个简单的任务 private static Runnable createTask(final int taskID) { return new Runnable() { private Socket socket = null; private int port=8821; public void run() { System.out.println("Task " + taskID + ":start"); try { socket = new Socket("localhost", port); // 发送关闭命令 OutputStream socketOut = socket.getOutputStream(); socketOut.write("shutdown\r\n".getBytes()); // 接收服务器的反馈 BufferedReader br = new BufferedReader( new InputStreamReader(socket.getInputStream())); String msg = null; while ((msg = br.readLine()) != null) System.out.println(msg); } catch (IOException e) { e.printStackTrace(); } } }; } }
发表评论
-
Java压缩 解压缩zip 并解决linux下中文乱码
2012-06-13 15:00 27761:再压缩前,要设置linux模式, 需要使用第三方ant-1 ... -
关于英文操作系统中解析中文文件插入到oracle中乱码问题
2011-11-04 22:58 1376真实环境: windows 2008 英文版 weblog ... -
Java反射经典实例 Java Reflection Cookbook (初级)
2009-10-16 14:56 2808Java提供了一套机制来动态执行方法和构造方法,以及数组操作等 ... -
判断密码的小方法(记一下不怕忘了)
2009-05-12 18:11 1314package test; import java.ut ... -
java的一些实用工具方法(用的时候随手了)
2009-03-28 16:21 1324// 将127.0.0.1 形式的IP地址转换成10进制整数, ... -
用XSL与XML实现多级菜单
2008-12-12 15:22 2557XML是可扩展标记语言(地 ... -
封装JNDI操作LDAP服务器的工具类(1)
2008-07-18 15:28 2441LDAP操作封装类 作者:廖武锋 MSN:liaowufe ... -
学Java应该搞懂的问题
2008-07-16 09:21 1455导读: 对于这个 ... -
Java实现获取本机上ADSL的IP
2008-05-20 15:42 2217import java.net.*; public clas ... -
对Spring做简单介绍
2007-11-05 16:46 1324Spring和Struts一样都是一 ... -
Struts,Spring,Hibernate优缺点
2007-11-05 12:06 3213.struts struts框架具有组件的模块化,灵活性和重 ... -
什么是JDBC
2007-11-05 12:05 2089JDBC, 全称为Java DataBase Co ... -
JAVA程序员之路
2007-11-04 22:41 2578很多网友问我学习Java有没有什么捷径,我说“无他,唯手熟尔” ... -
数据库时代的终结
2007-11-04 22:37 1192以数据库为核心的软件时代已经过去,数据库时代早已结束,当我看到 ... -
致面向对象技术初学者的一封公开信
2007-11-04 22:35 1218致面向对象技术初学者 ... -
Java EE/J2EE面向对象实战之道
2007-11-04 22:12 1134经常看到不少人抱怨Java ... -
经典Java基础问题!!!!
2007-11-03 00:02 1355对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果 ... -
什么是ant?
2007-11-02 23:28 2417ant Ant是一种基于Java的build工具。理论上来说, ... -
什么是Ruby
2007-11-02 21:06 1321Ruby是一种功能强大的面向对象的脚本语言,她可以使您方便快捷 ... -
转发和重定向的区别
2007-11-02 20:38 4765转发和重定向的区别 不要仅仅为了把变量传到下一个页面而使用s ...
相关推荐
多线程Java Socket编程示例展示了如何在服务器端利用线程池处理多个并发客户端请求。在这个例子中,`sterning.MultiThreadServer` 类创建了一个监听特定端口(默认为8821)的服务器,并使用`ExecutorService`来管理...
多线程Java Socket编程的关键在于,通过ExecutorService线程池来管理和调度任务,可以有效地应对大量并发的客户端请求。这种方式避免了单线程模型中,一个客户端的阻塞会导致其他客户端无法服务的问题。此外,线程池...
Java 多线程-Socket 编程是指在 Java 语言中使用多线程技术来实现网络编程,特别是使用 Socket 编程来实现客户端和服务器端的通信。在 Java 中,多线程可以使用 Thread 类和 Runnable 接口来实现,而 Socket 编程则...
### 多线程Java_Socket编程示例 #### 背景与意义 在现代软件开发尤其是网络应用领域,多线程技术与Socket编程是两个非常重要的概念和技术。多线程能够有效地利用计算机资源,提高程序运行效率;而Socket编程则是...
综上所述,这个Java Socket编程示例可能会展示如何创建一个简单的客户端和服务器应用程序,同时结合了用户友好的界面。通过阅读和理解示例代码,你可以学习到Java网络编程的基础,包括建立连接、交换数据和管理资源...
Java Socket 编程实现的简单多线程 WEB 服务器 在本文中,我们将详细介绍如何使用 Java 的 Socket 编程实现一个简单的多线程 WEB 服务器。 Socket 编程简介 Socket 编程是 Java 网络编程的基础,它允许开发者创建...
在实际应用中,Java Socket编程通常涉及异常处理、多线程以及数据的序列化与反序列化。例如,服务器端可能需要同时处理多个客户端连接,这时可以使用多线程来并发处理。客户端和服务器之间的数据交换可以采用JSON、...
在本文中,我们将深入探讨Java Socket编程的关键概念、工作原理以及如何创建服务端和客户端,并讨论如何通过多线程支持多个客户端同时在线。 首先,Socket是网络上的两个进程间通信的端点,它允许数据在网络中双向...
在学习和实践多线程和Socket编程时,可以参考"java多线程"、"java Socket的知识"等文档,这些资料通常会涵盖线程的创建、管理、同步和通信,以及Socket的创建、连接、数据传输等基本操作。通过深入理解这些知识点,...
本实例集中,我们关注的是三个关键的Socket编程示例,旨在帮助初学者理解其工作原理和应用。 1. **基础Socket连接** - 客户端(Socket):通过`Socket`类创建一个到指定服务器(IP地址和端口号)的连接。`Socket`...
本资料包含的"Java源码:Socket编程"是一个示例,旨在帮助开发者理解并掌握Java中的Socket编程技术。 首先,Socket编程涉及的主要类有`ServerSocket`和`Socket`。`ServerSocket`类用于创建服务器端的监听套接字,它...
在Java Socket编程中,多线程的应用通常体现在以下两个方面: 1. **服务器端多线程**:当服务器接收到客户端的连接请求时,为了同时处理多个客户端的请求,服务器端可以创建一个新的线程来处理每个连接。这样,...
Socket编程示例代码是关于TCP/IP套接字通信的基础,它可以用于建立两个应用程序之间的双向通信通道。这些示例可能涵盖服务器端(ServerSocket)的创建,客户端(Socket)的连接,数据的读写,以及异常处理。 最后,...
多线程是Java编程中的一个重要概念,允许程序同时执行多个任务。在这个“Java Socket 多线程实例”中,我们将会探讨如何结合这两个关键概念来创建一个聊天服务器和客户端应用。 首先,`ChatServer.java` 文件通常...
Java Socket 多线程通信是网络编程中的一个重要概念,它允许两个或多个应用程序通过TCP/IP进行数据交换。在这个示例中,我们创建了一个双向通信的系统,即双工通信,这意味着数据可以在两个方向上同时传输。这样的...
Java Socket通信是网络编程中的基础概念,主要用于两个应用程序之间的双向通信。在这个"Java_socket 通信示例"中,我们看到的是一个简单的聊天室应用,它利用了Java的Socket API来实现实时的数据交换。以下是对这个...
在提供的部分内容中,我们看到涉及了多线程Java Socket编程的核心实现。MultiThreadServer类代表了一个多线程的服务器端,它使用ExecutorService来管理线程池,接受客户端的Socket连接,并为每个连接分配一个Handler...
总的来说,Java Socket编程涉及到网络通信的基本模型、端口的使用、数据的读写以及多线程处理等核心概念。通过`ServerSocket`和`Socket`类,开发者可以构建出能够处理多个客户端请求的服务器,以及与之交互的客户端...
Socket编程是计算机网络编程中的重要组成部分,特别是在Java中,它为开发者提供了在不同网络设备间交换数据的能力。本文将深入探讨Linux环境下使用Java进行Socket编程的相关知识点。 首先,Socket是网络通信中的一...
书中提供了多个实用的案例,如简单的聊天室应用、文件传输服务等,这些案例不仅展示了Socket编程的基本原理,也涵盖了多线程、非阻塞I/O和安全通信等高级主题。通过动手实践,读者可以将理论知识转化为实际技能,更...