- 浏览: 1098517 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
skyesx:
这是2PC实现,更常用的是一个柔性事务的实现,可以参考http ...
Spring分布式事务实现 -
ddbird:
这第一句就不严谨“分布式事务是指操作多个数据库之间的事务”,显 ...
Spring分布式事务实现 -
呵呵6666:
基于互联网支付系统的微服务架构分布式事务解决方案http:// ...
Spring分布式事务实现 -
小黄牛:
写得不错,交流群:472213887
Spring分布式事务实现 -
jiaoqf321456:
这明明是用的apache的压缩,给ant.jar有半毛钱关系吗 ...
使用ant.jar进行文件zip压缩
(1)Server端
(2)定义一个实现runable接口的类:ConnectionHandler
(3)Client端
import java.io.*; import java.net.*; /** *修改 acceptConnections() 以用缺省为 50(或任何您想要的大于 1 的指定数字)实例化 ServerSocket。 *修改 ServerSocket 的 handleConnection() 以用 ConnectionHandler 的一个实例生成一个新的 Thread。 * @author Administrator */ public class MultithreadedRemoteFileServer { int listenPort; public MultithreadedRemoteFileServer(int listenPort) { this.listenPort=listenPort; } //允许客户机连接到服务器,等待客户机请求 public void acceptConnections() { try { //指定待发数(backlog 值)是5,一次可以放五个请求到队列中 ServerSocket server = new ServerSocket(listenPort, 5); Socket incomingConnection = null; while(true) { incomingConnection = server.accept(); handleConnection(incomingConnection); } } catch(BindException e) { System.out.println("Unable to bind to port "+listenPort); } catch(IOException e) { System.out.println("Unable to instantiate a ServerSocket on port: "+listenPort); } } //与客户机Socket交互以将客户机所请求的文件的内容发送到客户机 public void handleConnection(Socket connectionToHandle) { new Thread(new ConnectionHandler(connectionToHandle)).start(); } public static void main(String args[]) { MultithreadedRemoteFileServer server = new MultithreadedRemoteFileServer(1001); server.acceptConnections(); } }
(2)定义一个实现runable接口的类:ConnectionHandler
import java.io.*; import java.net.*; /** *借用 RemoteFileServer 的 handleConnection() 方法的代码实现 ConnectionHandler 类。 * @author Administrator */ public class ConnectionHandler implements Runnable { protected Socket socketToHandle; public ConnectionHandler(Socket socketToHandle) { this.socketToHandle=socketToHandle; } public void run() { try { PrintWriter streamWriter = new PrintWriter(socketToHandle.getOutputStream()); //读Socket BufferedReader streamReader = new BufferedReader(new InputStreamReader(socketToHandle.getInputStream())); String fileToRead = streamReader.readLine(); BufferedReader fileReader = new BufferedReader(new FileReader(fileToRead)); String line =null; while((line=fileReader.readLine())!=null) { streamWriter.println(line);//写Socket } fileReader.close(); //如果您在关闭streamWriter之前关闭streamReader,则您可以往Socket写任何东西, //但却没有任何数据能通过通道(通道被关闭了) streamWriter.close(); streamReader.close(); } catch(Exception e) { System.out.println("Error handling a client: "+e); e.printStackTrace(); } } }
(3)Client端
import java.io.*; import java.net.*; /** * 用您想连接的机器的 IP 地址和端口实例化 Socket。 * 获取 Socket 上的流以进行读写。 * 把流包装进 BufferedReader/PrintWriter 的实例,如果这样做能使事情更简单的话。 * 对 Socket 进行读写。 * 关闭打开的流。 * @author Administrator */ public class RemoteFileClient { protected BufferedReader socketReader; protected PrintWriter socketWriter; protected String hostIp; protected int hostPort; /** * 构造方法 */ public RemoteFileClient(String hostIp, int hostPort) { this.hostIp = hostIp; this.hostPort=hostPort; } /** * 向服务器请求文件的内容,告诉服务器我们想要什么文件并在服务器传回其内容时接收该内容 */ public String getFile(String fileNameToGet) { StringBuffer fileLines = new StringBuffer(); try { socketWriter.println(fileNameToGet); socketWriter.flush(); String line = null; while((line=socketReader.readLine())!=null) fileLines.append(line+"\n"); } catch(IOException e) { System.out.println("Error reading from file: "+fileNameToGet); } return fileLines.toString(); } /** * 连接到远程服务器,创建我们的 Socket 并让我们访问该套接字的流 */ public void setUpConnection() { try { Socket client = new Socket(hostIp,hostPort); socketReader = new BufferedReader(new InputStreamReader(client.getInputStream())); socketWriter = new PrintWriter(client.getOutputStream()); } catch(UnknownHostException e) { System.out.println("Error1 setting up socket connection: unknown host at "+hostIp+":"+hostPort); } catch(IOException e) { System.out.println("Error2 setting up socket connection: "+e); } } /** * 使用完毕连接后负责“清除”。 */ public void tearDownConnection() { try { socketWriter.close(); socketReader.close(); }catch(IOException e) { System.out.println("Error tearing down socket connection: "+e); } } public static void main(String args[]) { RemoteFileClient remoteFileClient = new RemoteFileClient("127.0.0.1",1001); remoteFileClient.setUpConnection(); StringBuffer fileContents = new StringBuffer(); fileContents.append(remoteFileClient.getFile("D:/test.txt")); //remoteFileClient.tearDownConnection(); System.out.println(fileContents); } }
发表评论
-
使用zxing.jar生成二维码
2015-10-15 13:52 01、ZxingCodeUtils /** * 使用Zx ... -
Java生成条形码与二维码
2015-09-29 11:02 0一、一维条形码 /** * 利用jbarcode.ja ... -
将html特殊码( &#x)转换成字符
2015-06-09 11:54 0public static void main(St ... -
Java多线程编程
2013-10-16 13:45 0一、线程安全的延迟初始化 1、基于volatile的双重检查锁 ... -
Java常用方法整理
2013-06-13 16:00 01、判断是否为中文字符 /** * 判断是否为中文 ... -
使用servicemix实现FTP连接池
2013-06-13 13:17 0一、配置文件 <?xml version=" ... -
嵌入式运行HttpServer
2015-06-30 13:14 1749一、嵌入式运行Jetty并提供上传文件功能 1、定义处理请求的 ... -
使用Quartz执行定时任务
2012-05-24 11:00 0一、在application中运用 (1)定义任务 pac ... -
Java内存泄漏分析与解决方案
2012-03-18 13:49 0作为Internet最流行的编程语言之一,Java现正非常 ... -
java访问FtpSever
2011-10-09 15:18 0使用apache common-net包来实现。 ... -
JNI(Java Native Interface)的使用
2015-06-30 13:12 3267Java JNI是Java Native Interf ... -
Java Regular Expressions Syntax
2009-07-22 20:54 3072一、正则表达式语法 1. ... -
jsp custom taglib
2009-07-10 12:20 01.java文件 public class Repeate ... -
java filter
2009-07-10 12:13 17301过滤器Filter也具有生命周期:init()-> ... -
HTTP 头部详细解释
2009-07-09 11:46 01. Accept:告诉WEB服务器 ... -
JavaMail读发邮件
2009-07-07 14:04 6293一、基本概念: SMTP(Simple Mail Tra ... -
java 验证码/Checked vs UnChecked Exception
2009-06-15 10:54 2297<一>、Java生成验证码图片 1.Servlet ... -
jsp统计在线人数和在线注册人数
2009-05-31 12:50 9193一、统计在线人数 1.监 ... -
Java TimeZone
2009-04-15 16:32 28922protected static Format form ... -
JPA是什么
2009-03-28 18:59 2429JPA全称为Java Persiste ...
相关推荐
Java Socket 编程实现的简单多线程 WEB 服务器 在本文中,我们将详细介绍如何使用 Java 的 Socket 编程实现一个简单的多线程 WEB 服务器。 Socket 编程简介 Socket 编程是 Java 网络编程的基础,它允许开发者创建...
Java 多线程-Socket 编程是指在 Java 语言中使用多线程技术来实现网络编程,特别是使用 Socket 编程来实现客户端和服务器端的通信。在 Java 中,多线程可以使用 Thread 类和 Runnable 接口来实现,而 Socket 编程则...
在Java Socket编程中,确保在完成操作后正确关闭Socket和相关流是非常重要的。通常在finally块中关闭Socket和流,以防止资源泄漏。 ```java try { // Socket操作 } catch (IOException e) { e.printStackTrace();...
在Java编程语言中,Socket是实现网络通信的基本组件。"Java Socket学习---单线程阻塞"这个主题主要探讨了如何使用Java的Socket类进行单线程的阻塞式通信,这种模式通常用于简单的客户端-服务器应用。在这个场景中,...
首先,我们来深入理解Java Socket编程。Socket是网络通信中的端点,它允许两台计算机(或者网络上的任何其他设备)通过TCP/IP协议进行通信。在Java中,`java.net.Socket`和`java.net.ServerSocket`类是实现Socket...
以上就是使用Java Socket编程实现文件上传涉及到的主要知识点,包括Socket通信机制、文件I/O、数据库操作、异常处理、多线程、安全性和性能优化等方面。理解并掌握这些内容,对于开发高效、可靠的文件上传系统至关...
本篇文章将深入讲解如何通过三步学习Java Socket编程。 **第一步:理解Socket** Socket,又称为“套接字”,是网络通信中的一个抽象概念,它封装了IP地址和端口号,是网络通信链路的句柄。在Java中,Socket和...
多线程Java Socket编程示例展示了如何在服务器端利用线程池处理多个并发客户端请求。在这个例子中,`sterning.MultiThreadServer` 类创建了一个监听特定端口(默认为8821)的服务器,并使用`ExecutorService`来管理...
在本文中,我们将深入探讨Java Socket编程的关键概念、工作原理以及如何创建服务端和客户端,并讨论如何通过多线程支持多个客户端同时在线。 首先,Socket是网络上的两个进程间通信的端点,它允许数据在网络中双向...
在本学习笔记中,我们将探讨如何使用Java的Socket编程实现多线程服务器,特别是通过ExecutorService创建线程池来处理客户端的并发请求。ExecutorService是一个高级的线程管理工具,它允许我们更有效地管理和控制线程...
在Java Socket编程中,多线程的应用通常体现在以下两个方面: 1. **服务器端多线程**:当服务器接收到客户端的连接请求时,为了同时处理多个客户端的请求,服务器端可以创建一个新的线程来处理每个连接。这样,...
Java Socket 实例是Java网络编程中的重要组成部分,用于实现客户端与服务器之间的通信。在这个实例中,我们关注的是服务器端的多线程应用,这在处理多个并发连接时尤其有用。多线程允许服务器同时处理多个客户端请求...
我们将结合"Java Socket实战之二 多线程通信"这篇博文进行深入解析。 首先,了解Socket的基本概念。Socket在计算机网络中扮演着客户端与服务器之间通信的桥梁角色。它提供了低级别的、面向连接的、基于TCP/IP协议的...
三、Socket编程流程 1. 客户端:创建Socket,指定服务器的IP地址和端口,建立连接。 2. 服务端:监听特定端口,接受客户端连接,创建Socket。 3. 双方:通过Socket的输入输出流进行数据交换。 4. 结束:当通信完成后...
多线程是Java编程中的一个重要概念,允许程序同时执行多个任务。在这个“Java Socket 多线程实例”中,我们将会探讨如何结合这两个关键概念来创建一个聊天服务器和客户端应用。 首先,`ChatServer.java` 文件通常...
Java Socket编程是Java网络编程的重要组成部分,主要用于实现客户端与服务器之间的通信。在本文中,我们将深入探讨Java Socket编程的基础知识,以及如何结合HTML进行交互。 首先,Java Socket是TCP/IP协议族的一...
**Java Socket编程**: Java Socket是Java提供的网络通信接口,它允许两个网络应用程序通过TCP/IP协议进行通信。Socket基于TCP协议,提供可靠的、面向连接的数据通信。在Java中,Socket类代表了网络上的一个连接,而...
这个学习资源可以帮助我们深入了解Java中的TCP Socket编程和多线程技术。 首先,让我们来看看TCP协议。TCP是一种面向连接的、可靠的传输协议,它保证了数据包在传输过程中的顺序和完整性。通过三次握手建立连接,四...
Java Socket多线程文件传输实例项目是一个典型的网络编程应用场景,主要涉及了Socket编程、多线程处理以及文件I/O操作等关键知识点。在这个项目中,开发者利用Java的Socket API实现了一个能够支持多个客户端同时进行...
通过对`EchoServer.java`、`SocketUtils.java`和`EchoClient.java`的分析,我们可以深入理解Java Socket编程以及多线程阻塞模式在实际应用中的实现。这对于开发网络应用程序,尤其是需要处理大量并发连接的服务端...