欢迎来到天天文库
浏览记录
ID:51815821
大小:93.00 KB
页数:13页
时间:2020-03-16
《自定义简单的协议用socket实现文件上传.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、久服务端定义一个Serversocket监听一个某个端口「当有上传请求到来时就在线程池中取一个线程处理请求。packagecom.my.socket.server;importjava.io.File;importjava.io.IOException;importjava.net.ServerSocket;importjava.net.Socket;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importcom.my.socket.constant.
2、MyServerConstant;publicfinalclassMySockerServer{publicstaticvoidmain(String[]args)throwsIOException{finalFilesavedir=newFile(MyServerConstant.SAVE_DIRECTORY);if(!savedir.exists())savedir.mkdir();ServerSocketmyServerSocket=newServerSocket(MyServerConstant.PORT,50);while(true){SocketmySo
3、cket=myServerSocket.acceptQ;ExecutorServiceexecutorService=Executors.newFixedThreadPool(8);executorService.execute(newServerHander(mySocketzsavedir));}}}4、服务端处理上传的线程类:packagecom.my.socket.server;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.I
4、nputStream;importjava.io.OutputStream;importjava.net.Socket;importjava.util.HashMap;importjava.util.Map;importcom.my.socket.constant.MyServerConstant;importcom.my.socket.util.StreamUtil;publicclassServerHanderimplementsRunnable{privateSocketmySocket=null;privateFilesaveFileDirectory=nu
5、ll;publicServerHander(SocketmySocket,FilesaveFileDirectory){super();this.mySocket=mySocket;this.saveFileDirectory=saveFileDirectory;}@Overridepublicvoidrun(){try{Inputstreamin二mySocket.getInputStream();byte[]headData=StreamUtil.readHead(in);//±传的文件头读入数组MapheadParamter=th
6、is.pareHeader(newString(headData,MyServerConstant.UTF_8));FilesaveFile=newFile(this.saveFileDirectoryzheadParamter.get(MyServerConstant.FILE_NAME));if(!saveFile.exists())saveFile.createNewFile();Outputstreamfos=newFileOutputStream(saveFile);byte[]buffer=newbyte[1024];intlen二0;while((le
7、n=in.read(buffer,0,1024))!=-1){fos.write(bufferz0,len);}fos.flushO;fos.close();System.outprintln(Mend”);Outputstreamos=mySocket.getOutputStream();os.flushO;if(mySocket!=null)mySocket.closeO;}catch(IOExceptione){e.printStackTrace();}}privateMappareHeader(Stringparam){Ma
此文档下载收益归作者所有