java之Socket多线程传递对象
2013-12-06 16:29
465 查看
服务器端利用线程池回复客户端:
客户端Socket传输对象:
核心代码就这些:
调用开启线程:Serverserver=newServer2(6668,3); server.start();
publicclassServerimplementsRunnable{ privatefinalServerSocketserver; privatefinalExecutorServicepool; publicServer(intport,intpoolSize)throwsIOException{ this.server=newServerSocket(port); this.pool=Executors.newFixedThreadPool(poolSize); } publicvoidrun(){ while(true){ Socketsocket; try{ socket=this.server.accept(); pool.execute(newServerRepleyLines(socket)); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } } }
ServerRepleyLines类具体代码,里面用到的数据类可以暂不考虑:
publicclassServerRepleyLinesextendsThread{ privateDBHelperhelper; privateSocketclient; publicServerRepleyLines(Socketclient){ this.client=client; this.helper=newDBHelper(); } @Override publicvoidrun(){ //TODOAuto-generatedmethodstub try{ ObjectInputStreamfin=newObjectInputStream( newBufferedInputStream(this.client.getInputStream())); try{ TicketInfoqa=(TicketInfo)fin.readObject(); System.out.println(qa.getStarting_station()); if(qa.getType()==2){ LineInfoslines=this.helper.getAllLineInfos( qa.getStarting_station(),qa.getTerminal_station(),qa.getDate_time().toString()); ObjectOutputStreamfout=newObjectOutputStream( client.getOutputStream()); fout.writeObject(lines); fout.flush(); } fin.close(); }catch(ClassNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } }
客户端Socket传输对象:
publicLineInfossendAndGetLinesInfo(TicketInfoticket){ Socketsocket=this.CreateASocket(2); try{ ObjectOutputStreamfout=newObjectOutputStream( socket.getOutputStream()); fout.writeObject(ticket); fout.flush(); LineInfoslines=null; ObjectInputStreamfin=newObjectInputStream( newBufferedInputStream(socket.getInputStream())); try{ lines=(LineInfos)fin.readObject(); fin.close(); }catch(ClassNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } fout.close(); returnlines; }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returnnull; }
核心代码就这些:
调用开启线程:Serverserver=newServer2(6668,3); server.start();
相关文章推荐
- 通过socket连接传递java对象(对象序列化)
- C#(服务器)与Java(客户端)通过Socket传递对象(序列化 json)
- 通过socket传递java对象(对象序列化)
- 通过SOCKET传递序列化的Java对象的方法 序列化 Socket
- 通过socket连接传递java对象(对象序列化)
- 通过socket传递java对象(对象序列化)
- 通过socket连接传递java对象(对象序列化
- C#(服务器)与Java(客户端)通过Socket传递对象
- Java Socket 通信中传递Object对象注意的问题
- 通过socket连接传递java对象(对象序列化)
- 通过socket传递java对象(对象序列化)
- C#(服务器)与Java(客户端)通过Socket传递对象
- 通过socket传递java对象(对象序列化)
- 初学Java多线程:向线程传递数据的三种方法
- java向多线程中传递参数
- Java多线程编程基础之线程对象
- Java多线程编程核心技术---对象及变量的并发访问(一)
- (Java多线程)分析静态方法所适用的同步监视器对象是什么?
- Java NIO框架Netty教程(三) – Object对象传递