`
shenjichao2009
  • 浏览: 96369 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java中多线程服务

    博客分类:
  • Java
阅读更多

/**
*
*/
package com.duoguo.socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

/**
* @author shyboy(chao.shen@duoguo.cn)
*
*/
public class Client {

private String hostIp;// 客户端主机IP

private int hostPort;// 客户端主机端口号

private BufferedReader in;// 客户端输入流

private PrintWriter out;// 客户端输出流

/**
* 构造方法
*
* @param hostip
* :IP地址
* @param hostPort
* :端口号
*/
public Client(String hostip, int hostPort) {
this.hostIp = hostip;
this.hostPort = hostPort;
}

/**
* 建立连接
*/
public void setUpConnection() {
try {

Socket client = new Socket(hostIp, hostPort);

in = new BufferedReader(new InputStreamReader(client
.getInputStream()));// 客户端输入流

out = new PrintWriter(client.getOutputStream());// 客户端输出流

} catch (UnknownHostException e) {

System.out.println("找不到相应的主机!");
e.printStackTrace();

} catch (IOException e) {

System.out.println("抛出相应的流异常信息");
e.printStackTrace();

}
}

/**
* 获取文件
*
* @param fileName
* :文件名称
* @return String
*/
public String getFile(String fileName) {
StringBuilder sb = new StringBuilder();

out.println(fileName);
out.flush();

String line = null;
try {

System.out.println("客户端连接成功!");
while ((line = in.readLine()) != null) {
sb.append(line + "\n");
}

} catch (IOException e) {

System.out.println("文件读入失败!");
e.printStackTrace();

}

return sb.toString();
}

/**
* 断开连接
*/
public void tearDownConnection() {
try {

out.close();// 关闭输出流
in.close();// 关闭输入流

} catch (IOException e) {

System.out.println("断开连接失败!");
e.printStackTrace();

}
}

/**
* @param args
*/
public static void main(String[] args) {

Client client = new Client("127.0.0.1", 9999);
client.setUpConnection();
String fileContent = client.getFile("D:\\hello.txt");
System.out.println("文件内容为:" + "\n" + fileContent);
client.tearDownConnection();

}

}

 

/**
*
*/
package com.duoguo.util;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

/**
* @author shyboy(chao.shen@duoguo.cn)
*
*/
public class ConnectionHandler implements Runnable {

private Socket socket;

private BufferedReader in;

private PrintWriter out;

private BufferedReader fileBufferedReader;

/**
* 构造器
*
* @param socket
*/
public ConnectionHandler(Socket socket) {
this.socket = socket;
}

/*
* (non-Javadoc)
*
* @see java.lang.Runnable#run()
*/
@Override
public void run() {

try {

in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));

out = new PrintWriter(socket.getOutputStream());

String line = in.readLine();
fileBufferedReader = new BufferedReader(new FileReader(line));
String value = null;

while ((value = fileBufferedReader.readLine()) != null) {
out.println(value);
}

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

fileBufferedReader.close();
out.close();
in.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

 

/**
*
*/
package com.duoguo.socket;

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

import com.duoguo.util.ConnectionHandler;

/**
* @author shyboy(chao.shen@duoguo.cn)
*
*/
public class MultiServer {

public int listenerPort;

/**
* 构造器
*
* @param listenerPort
* :监听的端口号
*/
public MultiServer(int listenerPort) {
this.listenerPort = listenerPort;
}

/**
* 接受连接
*/
public void acceptConnection() {
try {

ServerSocket serverSocket = new ServerSocket(listenerPort, 5);

while (true) {
Socket socket = serverSocket.accept();
handleConnection(socket);// 处理连接
}

} catch (IOException e) {

e.printStackTrace();

}
}

/**
* 处理连接
*
* @param socket
* :套接字
*/
public void handleConnection(Socket socket) {
new Thread(new ConnectionHandler(socket)).start();
}

/**
* @param args
*/
public static void main(String[] args) {

MultiServer multiServer = new MultiServer(9999);

multiServer.acceptConnection();// 接受连接

}

}

分享到:
评论

相关推荐

    Java多线程机制(讲述java里面与多线程有关的函数)

    Java多线程机制是Java编程中至关重要的一部分,它允许程序同时执行多个任务,提升应用程序的效率和响应性。以下是对各个知识点的详细说明: 9.1 Java中的线程: Java程序中的线程是在操作系统级别的线程基础上进行...

    Java多线程设计模式上传文件

    Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式...

    JAVAJAVA多线程教学演示系统论文

    《JAVA多线程教学演示系统》是一篇深入探讨JAVA多线程编程的论文,它针对教育领域中的教学需求,提供了一种生动、直观的演示方式,帮助学生更好地理解和掌握多线程技术。这篇论文的核心内容可能包括以下几个方面: ...

    java 多线程操作数据库

    ### Java多线程操作数据库:深入解析与应用 在当今高度并发的应用环境中,Java多线程技术被广泛应用于处理数据库操作,以提升系统的响应速度和处理能力。本文将基于一个具体的Java多线程操作数据库的应用程序,深入...

    JAVA单线程多线程

    ### JAVA中的单线程与多线程概念解析 #### 单线程的理解 在Java编程环境中,单线程指的是程序执行过程中只有一个线程在运行。这意味着任何时刻只能执行一个任务,上一个任务完成后才会进行下一个任务。单线程模型...

    java多线程读取文件

    Java多线程读大文件 java多线程写文件:多线程往队列中写入数据

    java多线程Demo

    Java多线程是Java编程中的一个重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应速度。在Java中,实现多线程有两种主要方式:继承Thread类和实现Runnable接口。 1. 继承Thread类: 当我们创建一个新...

    java多线程查询数据库

    综上所述,"java多线程查询数据库"是一个涉及多线程技术、线程池管理、并发控制、分页查询等多个方面的复杂问题。通过理解和掌握这些知识点,我们可以有效地提高数据库操作的效率和系统的响应速度。

    java 多线程服务器

    java 实现绘制指针时钟 和多线程服务器java 实现绘制指针时钟 和多线程服务器java 实现绘制指针时钟 和多线程服务器java 实现绘制指针时钟 和多线程服务器java 实现绘制指针时钟 和多线程服务器java 实现绘制指针...

    Java多线程知识点总结

    Java多线程是Java编程语言中一个非常重要的概念,它允许开发者在一个程序中创建多个执行线程并行运行,以提高程序的执行效率和响应速度。在Java中,线程的生命周期包含五个基本状态,分别是新建状态(New)、就绪...

    JAVA之多线程服务器

    服务器端多线程,各客户端向服务器发送服务请求

    java多线程ppt

    java多线程PPT 多线程基本概念 创建线程的方式 线程的挂起与唤醒 多线程问题

    java多线程分页查询

    ### Java多线程分页查询知识点详解 #### 一、背景与需求分析 在实际的软件开发过程中,尤其是在处理大量数据时,如何高效地进行数据查询成为了一个关键问题。例如,在一个用户众多的社交平台上,当用户需要查看...

    java多线程进度条实例

    在Java编程中,多线程是一项关键特性,它允许程序同时执行多个任务,极大地提高了效率。本实例将探讨如何利用Java实现一个具有进度条显示功能的多线程应用。进度条通常用于可视化地表示某个任务的完成程度,这对于长...

    java多线程设计模式_java_设计模式_多线程_多线程课题_

    Java多线程设计模式是Java开发中的核心概念,它涉及到如何高效、安全地在多个执行线程之间共享资源和协调任务。设计模式是解决特定问题的成熟方案,它们是编程经验的结晶,可以帮助开发者在面临多线程挑战时快速找到...

    javad多线程

    Java 多线程编程是指在一个程序中可以运行多个线程,以提高程序的执行效率和响应速度。在 Java 中,多线程编程可以通过 Thread 类和 Runnable 接口来实现。 为什么需要多线程? 在单线程程序中,如果某个任务需要...

    java多线程经典案例

    本案例将深入探讨Java多线程中的关键知识点,包括线程同步、线程通信和线程阻塞。 线程同步是为了防止多个线程同时访问共享资源,导致数据不一致。Java提供了多种同步机制,如synchronized关键字、Lock接口...

    java 多线程并发实例

    在Java编程中,多线程并发是提升程序执行效率、充分利用多核处理器资源的重要手段。本文将基于"java 多线程并发实例"这个主题,深入探讨Java中的多线程并发概念及其应用。 首先,我们要了解Java中的线程。线程是...

    java多线程的讲解和实战

    Java多线程是Java编程中的重要概念,尤其在如今的多核处理器环境下,理解并熟练掌握多线程技术对于提高程序性能和响应速度至关重要。本资料详细讲解了Java多线程的原理,并提供了丰富的实战代码,非常适合Java初学者...

Global site tag (gtag.js) - Google Analytics