服务器端利用线程池回复客户端:

public class Server implements Runnable {

    private final ServerSocket server;
private final ExecutorService pool; public Server(int port, int poolSize) throws IOException {
this.server = new ServerSocket(port);
this.pool = Executors.newFixedThreadPool(poolSize);
} public void run() {
while (true) {
Socket socket;
try {
socket = this.server.accept();
pool.execute(new ServerRepleyLines(socket));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} } }
ServerRepleyLines类具体代码,里面用到的数据类可以暂不考虑:
public class ServerRepleyLines extends Thread {

    private DBHelper helper;
private Socket client; public ServerRepleyLines(Socket client) {
this.client = client;
this.helper = new DBHelper();
} @Override
public void run() {
// TODO Auto-generated method stub
try {
ObjectInputStream fin = new ObjectInputStream(
new BufferedInputStream(this.client.getInputStream()));
try {
TicketInfo qa = (TicketInfo) fin.readObject();
System.out.println(qa.getStarting_station());
if (qa.getType() == 2) {
LineInfos lines = this.helper.getAllLineInfos(
qa.getStarting_station(), qa.getTerminal_station(),qa.getDate_time().toString());
ObjectOutputStream fout = new ObjectOutputStream(
client.getOutputStream());
fout.writeObject(lines);
fout.flush();
}
fin.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }

客户端Socket传输对象:

public LineInfos sendAndGetLinesInfo(TicketInfo ticket) {
Socket socket = this.CreateASocket(2);
try {
ObjectOutputStream fout = new ObjectOutputStream(
socket.getOutputStream());
fout.writeObject(ticket);
fout.flush();
LineInfos lines = null;
ObjectInputStream fin = new ObjectInputStream(
new BufferedInputStream(socket.getInputStream()));
try {
lines = (LineInfos) fin.readObject();
fin.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
fout.close();
return lines; } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}

核心代码就这些:

调用开启线程:Server server=new Server2(6668,3);  server.start();

 

java之Socket多线程传递对象的更多相关文章

  1. 【Java】Socket+多线程实现控制台聊天室

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5827212.html 聊天室程序的结构图: 架构解释: Server服务器相当于一个中转站,Client客户端 ...

  2. java调用(axis2)WebService传递对象类型参数(源码)

    温馨提示:axis2 jar包哟 public static String pubRemoteFuc() {                String endpoint = "http:/ ...

  3. socket多线程方式案例

    记下来,方便以后查看 User类 package com.xujingyang.ThreadSocket; import java.io.Serializable; public class User ...

  4. C#(服务器)与Java(客户端)通过Socket传递对象(序列化 json)

    下面详细讲解实现的关键步骤:          通信关键: C#和java用Socket通信,发送数据和接收数据可以统一采用UTF-8编码,经过测试,使用UTF-8编码可以成功传递对象. 对于Sock ...

  5. java socket - 传递对象

    Person类: package com.zhyea.olproxy.socket; import java.io.Serializable; public class Person implemen ...

  6. Java网络与多线程系列之1:实现一个简单的对象池

    前言 为什么要从对象池开始呢,先从一个网络IO操作的demo说起 比如下面这段代码,显而易见已经在代码中使用了一个固定大小的线程池,所以现在的重点在实现Runnble接口的匿名对象上,这个对象每次创建 ...

  7. Java多线程基础——对象及变量并发访问

    在开发多线程程序时,如果每个多线程处理的事情都不一样,每个线程都互不相关,这样开发的过程就非常轻松.但是很多时候,多线程程序是需要同时访问同一个对象,或者变量的.这样,一个对象同时被多个线程访问,会出 ...

  8. 简单通过java的socket&serversocket以及多线程技术实现多客户端的数据的传输,并将数据写入hbase中

    业务需求说明,由于公司数据中心处于刚开始部署的阶段,这需要涉及其它部分将数据全部汇总到数据中心,这实现的方式是同上传json文件,通过采用socket&serversocket实现传输. 其中 ...

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

    http://blog.csdn.net/njchenyi/article/details/9072845 java socket 多线程网络传输多个文件 2013-06-10 21:26 3596人 ...

随机推荐

  1. 在基于AngularJs架构的ABP项目中使用UEditor

    [前提须知] 读过此篇博客 了解angular-ueditor 了解ABP如何使用 会使用VS2017 [1.下载ABP模板] https://aspnetboilerplate.com/Templa ...

  2. 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_类型的各种成员

    [Class中,可能包含的成员] 常量, 字段, 实例构造器, 类型构造器, 方法, 操作符重载, 转换操作符, 属性, 事件, 类型(Class)

  3. CodeForces-Zuhair and Strings(思维+枚举)

    Given a string ss of length nn and integer kk (1≤k≤n1≤k≤n). The string ss has a level xx, if xx is l ...

  4. Java线程同步之静态方法

    静态方法是同步方法:自动加锁,锁的对象是类对象 public static void main(String[] args) { Thread [] threadArr=new Thread[10]; ...

  5. SSH防入侵

    1.1 ssh防止入侵方法说明 如何防止SSH登录入侵小结: 1.用密钥登录,不用密码登陆 2.牤牛阵法:解决SSH安全问题 a.防火墙封闭SSH,指定源IP限制(局域网.信任公网) b.开启SSH只 ...

  6. APP微信支付实现

    参考官方文档 设计到的API: 统一下单API.支付结果通知API和查询订单API 下面代码是请求预支付ID // 构建下单bean final WxPayUnifiedOrderBean unifi ...

  7. AdvancedEncryptionStandard

    import java.security.GeneralSecurityException; import javax.crypto.Cipher; import javax.crypto.spec. ...

  8. Zero Sum Subarray

    Given an integer array, find a subarray where the sum of numbers is zero. Your code should return th ...

  9. SQL SERVER LEFT JOIN, INNER JOIN, RIGHT JOIN

    JOIN: 如果表中有至少一个匹配,则返回行 LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行 FULL JOIN: 只 ...

  10. JavaWeb xss攻击

    出处: http://www.cnblogs.com/TankXiao/archive/2012/03/21/2337194.html XSS 全称(Cross Site Scripting) 跨站脚 ...