java之Socket多线程传递对象
服务器端利用线程池回复客户端:
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多线程传递对象的更多相关文章
- 【Java】Socket+多线程实现控制台聊天室
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5827212.html 聊天室程序的结构图: 架构解释: Server服务器相当于一个中转站,Client客户端 ...
- java调用(axis2)WebService传递对象类型参数(源码)
温馨提示:axis2 jar包哟 public static String pubRemoteFuc() { String endpoint = "http:/ ...
- socket多线程方式案例
记下来,方便以后查看 User类 package com.xujingyang.ThreadSocket; import java.io.Serializable; public class User ...
- C#(服务器)与Java(客户端)通过Socket传递对象(序列化 json)
下面详细讲解实现的关键步骤: 通信关键: C#和java用Socket通信,发送数据和接收数据可以统一采用UTF-8编码,经过测试,使用UTF-8编码可以成功传递对象. 对于Sock ...
- java socket - 传递对象
Person类: package com.zhyea.olproxy.socket; import java.io.Serializable; public class Person implemen ...
- Java网络与多线程系列之1:实现一个简单的对象池
前言 为什么要从对象池开始呢,先从一个网络IO操作的demo说起 比如下面这段代码,显而易见已经在代码中使用了一个固定大小的线程池,所以现在的重点在实现Runnble接口的匿名对象上,这个对象每次创建 ...
- Java多线程基础——对象及变量并发访问
在开发多线程程序时,如果每个多线程处理的事情都不一样,每个线程都互不相关,这样开发的过程就非常轻松.但是很多时候,多线程程序是需要同时访问同一个对象,或者变量的.这样,一个对象同时被多个线程访问,会出 ...
- 简单通过java的socket&serversocket以及多线程技术实现多客户端的数据的传输,并将数据写入hbase中
业务需求说明,由于公司数据中心处于刚开始部署的阶段,这需要涉及其它部分将数据全部汇总到数据中心,这实现的方式是同上传json文件,通过采用socket&serversocket实现传输. 其中 ...
- java socket 多线程网络传输多个文件
http://blog.csdn.net/njchenyi/article/details/9072845 java socket 多线程网络传输多个文件 2013-06-10 21:26 3596人 ...
随机推荐
- lambda函数/排序/filter/map
1.lambda 匿名函数 zrf = lambda x:x**2 ret = zrf(10) #这里面实际上还是有函数名 print(ret) 2.sorted 排序(list也自带排序功能) 排序 ...
- 开源linux远程登录、远程文件管理(ftp)工具
ssh远程登录用 PuTTY.Xshell 5 如果觉得命令行下敲命令管理文件麻烦,就用WinSCP.FileZilla Client(SSH模式),可做到文件上传.下载.改权限等等,很便捷
- [ZJOI2018]历史(LCT)
这篇还发了洛谷题解 [Luogu4338] [BZOJ5212] 题解 题意 给出一棵树,给定每一个点的 \(access\) 次数,计算轻重链切换次数的最大值,带修改. 先考虑不带修改怎么做 假设 ...
- BAPC 2014:Button Bashing(暴力+bfs)
题意: 给出n,m,代表微波炉有n个按钮,要求达到总时间为m 然后给出n个数,代表n个按钮能增加的时间,问最少几步,能够使得按出的总时间大于等于要求的时间,并且相差最小 输出最小的步数与相差的最小值 ...
- css过渡transition
定义 过渡transition是一个复合属性,包括transition-property.transition-duration.transition-timing-function.transiti ...
- @AutoConfigureAfter不生效 @Configration bean的创建顺序
https://gooroo.io/GoorooTHINK/Article/17466/Lessons-Learned-Writing-Spring-Boot-Auto-Configurations/ ...
- 问题:modbus_tk开发中遇到[Errno 98] Address already in use (已解决)
案例: from modbus_tk import modbus_tcp,defines import time s = modbus_tcp.TcpServer(port=5300) def mai ...
- UVA - 213解题报告
题目链接:https://cn.vjudge.net/problem/UVA-213 Sample input TNM AEIOU 0010101100011 1010001001110110011 ...
- apache 与php的安装
1 系统环境与软件 1 php5.5.6 下载链接:http://windows.php.net/download/#php-5.5 推荐 V11 x64,也就是64bit的. 2 apache2 ...
- 【ACM】会场安排问题
会场安排问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办.小刘的工 ...