socket传多少文件|java中怎么用socket 一次传多个文件啊

❶ java socket如何实现一次传送多个文件

很简单,复就是把多制个文件“变成”一个文件传送就可以了,每个文件都是一个流,把这些流输入到一个流中合并流传输即可,这个是基本思路。实现差不多以下两个方法1、直接流拼接,循环要传输的文件列表,多个InputStream,然后输出到一个OutputStream,这个out就是发送数据的端口,为了接收端能够识别每个文件从而分割流,需要每个流中结尾添加分隔符。其实这就是HTTP文件上传的做法。2、就比较简单了,职业使用ZIP工具包吧需要传输的多文件压缩成一个文件传输,接收端直接解压缩就完事。需要注意的是,发送多文件上传你需要提取计算好总传输量字节大小放在传输报文头部告诉接收端你要发送的数据有多大,不然接收端可能无法完整接收数据。

❷ socket 传送文件

此程序所占篇幅太大,涉及服务器和客户端两个程序。费时间了。主要思想就那么一点:基本socket编程,再加上文件操作不就行了。服务器端接到客户端发送的内容后,将缓冲区内的东西存到本地文件1.txt然后再将应答存储在2.txt文件中,同时将2.txt的内容发送回客户端。客户端接到后,将收到的东西存到客户端本地的2.txt中后,再向服务器发送应答。这东西的本质不是发送文件,而是接受信息并存储到本地的txt中,希望你理解

❸ java :socket服务端同时传送多文件的问题

我刚刚学的java饿。我认为服务器的端口肯定是不会冲突的。3个客户端的端口号是不一样的,和服务器的端口号也没有关系。服务器 写一个循环,接受到一个客服端的请求,就创建一个新的线程,然后拿到输出流,输出文件。客服端 拿到输入流 接受文件就好了。然后,就是一些细节问题,像出了 Exception 要关闭连接之类 的。我也是菜鸟饿,共同探讨。

❹ java socket多文件传输问题

参考思路:1.先传文件名跟文件大小到 server。2.开始传文件。3.告诉server传完了。4.客户端开始传下一个,重复123。参考简单代码:long fileLength;int readLength;long totalLength;for (…){ // 读取文件名 // 读取文件长度保存到fileLength中 // 将totalLength置为0 while (1) { // 读取数据流,将实际读取的字节数保存在readLength中 totalLength += readLength; if (totalLength >= fileLength) // 一个文件读取完成,break // 这样就差不多了,不过这会把下一个文件的信息读到当前文件中来。 // 思路是fileLength – totalLength小于等于你设置的缓冲区长度时读取长度就是fileLength – totalLength } }

❺ java中怎么用socket 一次传多个文件啊

客户端接收多个文件的时候他所获取到的任然是一个字节流序列,所以你要确保第版一个文件的权序列有多长,第二个有多长….然后在客户端截取这些序列进行保存操作,处理方法有很多种,我以前用过的一种方法是接收数据时前1024个字节放文件名,然后的8个字节放文件大小,接着就是文件的信息。客户端只需要按这种方式解析就行了。。。希望对你有用。。。。

❻ 如何计算socket通信传输文件时的吞吐量

举例 :tcp的收发窗口大小为1024Byte,网络的链路带宽是1Mb/s,往返时延RTT是50ms,问最大吞吐率?带宽1Mb/S=125000 Byte/s Packet =1024+20+20+14+12+8+4=1102Byte线速的话125000/1102≈113pps 因往返时延50ms,所以1s内packet为1000ms/50ms=20次往返,小于线速113pps,于是最大吞吐率=(1102Byte*20)/125000Byte/s=17.632%

❼ java socket传送文件

客户端代码如下:

importjava.io.DataOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.IOException;importjava.net.InetSocketAddress;importjava.net.Socket;/***文件发送客户端主程序*@authoradmin_Hzw**/publicclassBxClient{/***程序main方法*@paramargs*@throwsIOException*/publicstaticvoidmain(String[]args)throwsIOException{intlength=0;doublesumL=0;byte[]sendBytes=null;Socketsocket=null;DataOutputStreamdos=null;FileInputStreamfis=null;booleanbool=false;try{Filefile=newFile("D:/天啊.zip");//要传输的文件路径longl=file.length();socket=newSocket();socket.connect(newInetSocketAddress("127.0.0.1",48123));dos=newDataOutputStream(socket.getOutputStream());fis=newFileInputStream(file);sendBytes=newbyte[1024];while((length=fis.read(sendBytes,0,sendBytes.length))>0){sumL+=length;System.out.println("已传输:"+((sumL/l)*100)+"%");dos.write(sendBytes,0,length);dos.flush();}//虽然数据类型不同,但JAVA会自动转换成相同数据类型后在做比较if(sumL==l){bool=true;}}catch(Exceptione){System.out.println("客户端文件传输异常");bool=false;e.printStackTrace();}finally{if(dos!=null)dos.close();if(fis!=null)fis.close();if(socket!=null)socket.close();}System.out.println(bool?"成功":"失败");}}

服务端代码如下:

importjava.io.DataInputStream;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.net.ServerSocket;importjava.net.Socket;importjava.util.Random;importcom.boxun.util.GetDate;/***接收文件服务*@authoradmin_Hzw**/publicclassBxServerSocket{/***工程main方法*@paramargs*/publicstaticvoidmain(String[]args){try{finalServerSocketserver=newServerSocket(48123);Threadth=newThread(newRunnable(){publicvoidrun(){while(true){try{System.out.println("开始监听…");/**如果没有访问它会自动等待*/Socketsocket=server.accept();System.out.println("有链接");receiveFile(socket);}catch(Exceptione){System.out.println("服务器异常");e.printStackTrace();}}}});th.run();//启动线程运行}catch(Exceptione){e.printStackTrace();}}publicvoidrun(){}/***接收文件方法*@paramsocket*@throwsIOException*/publicstaticvoidreceiveFile(Socketsocket)throwsIOException{byte[]inputByte=null;intlength=0;DataInputStreamdis=null;FileOutputStreamfos=null;StringfilePath="D:/temp/"+GetDate.getDate()+"SJ"+newRandom().nextInt(10000)+".zip";try{try{dis=newDataInputStream(socket.getInputStream());Filef=newFile("D:/temp");if(!f.exists()){f.mkdir();}/**文件存储位置*/fos=newFileOutputStream(newFile(filePath));inputByte=newbyte[1024];System.out.println("开始接收数据…");while((length=dis.read(inputByte,0,inputByte.length))>0){fos.write(inputByte,0,length);fos.flush();}System.out.println("完成接收:"+filePath);}finally{if(fos!=null)fos.close();if(dis!=null)dis.close();if(socket!=null)socket.close();}}catch(Exceptione){e.printStackTrace();}}}


赞 (0)