`
wlh269
  • 浏览: 457906 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SOCKET 文件传输

    博客分类:
  • J2SE
阅读更多
要求将服务端文件夹A下的文件拷贝到客户端文件A下 删除服务端文件夹A下的文件;
客户端文件夹B下的文件拷贝到服务端文件B下  然后删除客户端文件夹B下的文件;

技巧:实现过程中将要传输的文件打包后传输



服务端:
package com.socket.filetrans.exe;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

import com.socket.filetrans.LoadParamConfig;
import com.socket.zip.util.ZipUtil;


public class ServerTest   {
    
	int port = 0;
    static String SERVER_SENDPATH = "";
    String SERVER_SAVEPATH="";
    ServerSocket ss = null;
    Socket s = null;
    DataInputStream dis=null;
    DataOutputStream dos=null;
    static List fileList=new ArrayList();
    static ZipUtil zipUtilObj=new ZipUtil();
    public ServerTest() throws IOException{
    	Properties properties=LoadParamConfig.getProperties();
    	SERVER_SENDPATH=properties.getProperty("SERVER_SENDPATH");
    	SERVER_SAVEPATH=properties.getProperty("SERVER_SAVEPATH");
    	port=Integer.parseInt(properties.getProperty("SOCKET_PORT"));
    	ss=new ServerSocket(port);
    	 
    	File file=new File(SERVER_SENDPATH);
        if(!file.exists()){
       	 file.mkdir();
       	 System.out.println("创建目录:"+SERVER_SENDPATH);
        }  
        File file2=new File(SERVER_SAVEPATH);
        if(!file2.exists()){
       	 file2.mkdir();
       	 System.out.println("创建目录:"+SERVER_SAVEPATH);
       	 
       	
        }  
    }
   
    public static void main(String arg[]) {
        try {
        	
        	ServerTest server=new ServerTest();
        	while(true){
        		fileList=new ArrayList();
        		server.serverStart();
        		server.deleteDirectory(new File(SERVER_SENDPATH));
        		fileList=null;
        		//短时间内new socket操作很多,而socket.close()操作并不能立即释放绑定的端口,
        		//而是把端口设置为TIME_WAIT状态,过段时间(默认240s)才释放
        	    Thread.sleep(240000);
        	}
        	
		} catch (Exception e) {
			e.printStackTrace();
		}
    }
    
    public void serverStart() throws Exception {
    	
    
    	//===============================服务端批量写文件==========================================//
    	     File ZipFilePath=null;
    	     getAllFiles(SERVER_SENDPATH);
    	     
    	   while(true){ 
    	    if(new File(SERVER_SENDPATH).renameTo(new File(SERVER_SENDPATH))){
    	      if(fileList.size()>0){
    	    	 //压缩文件
    	    	 zipUtilObj.zip(SERVER_SENDPATH+".zip", SERVER_SENDPATH);
    	         //压缩文件绝对路径
    	    	  ZipFilePath=new File(SERVER_SENDPATH+".zip");
	    	
	    		  //写文件名
	    	      s = ss.accept();
	 		      dos = new DataOutputStream(s.getOutputStream());  
	 		      dos.writeUTF(ZipFilePath.getName());
	 		      System.out.println("服务端写文件名");
			      dos.close();
    			     
    			     
    			  //读确认信息
  	               s = ss.accept();
  	               dis= new DataInputStream(new BufferedInputStream(s.getInputStream()));   
  	  		      System.out.println(dis.readUTF());     
    			     
  	  		      
    	    	 //写数据
	    		   s = ss.accept();
	    		   DataInputStream fis = new DataInputStream(new BufferedInputStream(new FileInputStream(ZipFilePath)));
	    		   int bufferSize = 8192;
	               byte[] buf = new byte[bufferSize];
	               int read = 0;
	               while ((read = fis.read(buf))!=-1) {
	            	   dos = new DataOutputStream(s.getOutputStream());  
	                   dos.write(buf, 0, read);
	               }
	               dos.flush();
	               fis.close();
	               s.close();
	               System.out.println("服务端 写数据完成...");
	               
	               
	             //读信号
	               s = ss.accept();
	               dis= new DataInputStream(new BufferedInputStream(s.getInputStream()));   
	  		      System.out.println("服务端 读信号:"+dis.readUTF()+"\n");   
    	       }
    	      
    	       break;
    	     } 
         }
             // 服务端文件结束标志
    	     System.out.println("服务端没有数据发送或发送完成!");
    	     s = ss.accept();
 		     dos = new DataOutputStream(s.getOutputStream());  
 		     dos.writeUTF("serverFileSendOver");
		     dos.close();
    	   
		     //删除发送完的zip文件
			 boolean deleted2=false;
				if(ZipFilePath!=null){
					while(!deleted2){
						deleted2=ZipFilePath.delete();
					}
				}
		   //===============================服务端批量写文件 结束==========================================//
		   
    	
    	
    
    	
		 //===============================服务端批接收 文件==============================================//
				
			String	fileABSPath="";
			File tempFile=null;
	     while(true){
	    	 
	    	 //读文件名  或者结束标志
    	 	 s = ss.accept();
			 dis= new DataInputStream(new BufferedInputStream(s.getInputStream())); 
			 String fileName="";
			
			 if("clientFileSendOver".endsWith(fileName=dis.readUTF())){
				 System.out.println("服务端 收到客户端文件结束标志:"+fileName);   
				 break;
			 }
			 System.out.println("服务端 收到文件名:"+fileName);   
	    	 
			//写确认信息
			  s = ss.accept();
              dos = new DataOutputStream(new BufferedOutputStream(s.getOutputStream()));
              dos.writeUTF("服务端 确认收到文件名:"+fileName);
			   // dos.flush();
			  dos.close();
	    	 
			//读文件
		    fileABSPath=SERVER_SAVEPATH+File.separator+fileName;
            File tempdir=new File(fileABSPath.substring(0, fileABSPath.lastIndexOf("\\")));
            tempFile=new File(fileABSPath);
            if(!tempdir.exists()){
         	   tempdir.mkdirs();
	               
            }
            if(!tempFile.exists()){
         	   tempFile.createNewFile();
            }
            s = ss.accept();
			DataOutputStream fos = new DataOutputStream(new BufferedOutputStream(new BufferedOutputStream(new FileOutputStream(tempFile))));
			dis= new DataInputStream(new BufferedInputStream(s.getInputStream()));   
			 int bufferSize = 8192;
	         byte[] buf = new byte[bufferSize];
	         int read = 0;
	         while ((read = dis.read(buf))!=-1) {
	                fos.write(buf, 0, read);
	            }
	         fos.close();
	         System.out.println("服务端 读取数据完成...");
	         
	         
	         //写信号
	          s = ss.accept();
                dos = new DataOutputStream(new BufferedOutputStream(s.getOutputStream()));
                dos.writeUTF("ServerRecieved");
			   // dos.flush();
			  dos.close();
			  
			   System.out.println("......服务端 接收数据结束...开始解压文件...");
				
	     }
	     
		 
	       //解压数据
			if(!"".equals(fileABSPath) && ".zip".equals(fileABSPath.substring(fileABSPath.lastIndexOf(".")))){
				zipUtilObj.unzip(fileABSPath, SERVER_SAVEPATH);	
			}
			//删除压缩文件
			boolean deleted=false;
			if(tempFile!=null){
				while(!deleted){
					deleted=tempFile.delete();
				}
			}
    }
    //===============================服务端批接收 文件  结束==============================================//  
 	      
    
    
    
    
    /*
	 * 递归删除一个目录以及下面的文件
	 */
	public  boolean deleteDirectory(File path) {   
	    if( path.exists() ) {   
	      File[] files = path.listFiles();   
	      for(int i=0; i<files.length; i++) {   
	         if(files[i].isDirectory()) {   
	           deleteDirectory(files[i]);  
	         }   
	         else {   
	        	 //删除文件
	           files[i].delete();   
	         }   
	      }   
	    }   
	   //删除目录
	    boolean hasdelete=false;
	    if(!SERVER_SENDPATH.equals(path.getAbsolutePath())){
	     hasdelete=path.delete();
	    if(hasdelete){
	    	System.out.println("删除目录:"+path);
	    	
	    }
	    }
		return hasdelete;
	    
	    
	  }   
    /**
     * 得到服务端要发送的文件列表
     * @param dir
     * @return
     * @throws Exception
     */
    public void  getAllFiles(String dir) throws Exception{
    	File file=new File(dir);
    	 
    	if(!file.exists()){
    		file.mkdir();
    	}
    	File[] fs = file.listFiles();
		 if(fs!=null){
			 for(int i=0; i<fs.length; i++){
				   if(fs[i].isFile()){
					   fileList.add(fs[i].getAbsolutePath().substring(SERVER_SENDPATH.length()));
				   }
				   if(fs[i].isDirectory()){
				    try{
				    	getAllFiles(fs[i].getPath());
				    }catch(Exception e){}
				   }
				  } 
		 }
		
		 
		
		  
		 
  }

   

	
}




客户端:
package com.socket.filetrans.exe;


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

import com.socket.filetrans.LoadParamConfig;
import com.socket.zip.util.ZipUtil;


public class ClientTest {
    private Socket socket = null;

    private String ip = "";// 设置成服务器IP

    private int port = 0;
    
    static List fileList=null;;
    static String CLIENT_SENDPATH ="";
    String CLIENT_SAVEPATH="";
    DataInputStream dis=null;
    DataOutputStream dos=null;
    static ZipUtil zipUtilObj=new ZipUtil();
    
public ClientTest() {
        try {
        	Properties properties=LoadParamConfig.getProperties();
        	CLIENT_SENDPATH=properties.getProperty("CLIENT_SENDPATH");
        	CLIENT_SAVEPATH=properties.getProperty("CLIENT_SAVEPATH");
        	port=Integer.parseInt(properties.getProperty("SOCKET_PORT"));
        	ip=properties.getProperty("IP_ADDRESS");
        	File file=new File(CLIENT_SENDPATH);
            if(!file.exists()){
           	 file.mkdir();
           	 System.out.println("创建目录:"+CLIENT_SENDPATH);
            }  
            File file2=new File(CLIENT_SAVEPATH);
            if(!file2.exists()){
           	 file2.mkdir();
           	 System.out.println("创建目录:"+CLIENT_SAVEPATH);
            }  
        	
        
        	
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

	public static void main(String arg[]) {
	    try {
	    	
	    	ClientTest client=new ClientTest();
	    	while(true){
	    	fileList=new ArrayList();
	    	 client.clientStart();
	    	 client.deleteDirectory(new File(CLIENT_SENDPATH));
	    	 fileList=null;
	    	//短时间内new socket操作很多,而socket.close()操作并不能立即释放绑定的端口,
     		//而是把端口设置为TIME_WAIT状态,过段时间(默认240s)才释放
	    	 Thread.sleep(240000);
	    	}
	    	 
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	
    public void clientStart() throws Exception {
		
    	    String fileABSPath="";
    	    File tempFile=null;
			//=======================客户端批量 读取文件==================================//
			while(true){
				
				//读文件名 或者结束标志
				 socket = new Socket(ip, port);
				 dis= new DataInputStream(new BufferedInputStream(socket.getInputStream())); 
				 String fileName="";
				
				 if("serverFileSendOver".endsWith(fileName=dis.readUTF())){
					 System.out.println("客户端 收到服务端文件结束标志:"+fileName);   
					 break;
				 }
				 System.out.println("收到文件名:"+fileName);   
				 
				 
				 //写确认信息
				  socket = new Socket(ip, port);
	              dos = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));
	              dos.writeUTF("客户端 确认收到文件名:"+fileName);
				   // dos.flush();
				  dos.close();
				    
				    
				//读 
			    fileABSPath=CLIENT_SAVEPATH+File.separator+fileName;
	            File tempdir=new File(fileABSPath.substring(0, fileABSPath.lastIndexOf("\\")));
	            tempFile=new File(fileABSPath);
	            if(!tempdir.exists()){
	         	   tempdir.mkdirs();
		               
	            }
	            if(!tempFile.exists()){
	         	   tempFile.createNewFile();
	            }
				socket = new Socket(ip, port);
				DataOutputStream fos = new DataOutputStream(new BufferedOutputStream(new BufferedOutputStream(new FileOutputStream(tempFile))));
				dis= new DataInputStream(new BufferedInputStream(socket.getInputStream()));   
				 int bufferSize = 8192;
		         byte[] buf = new byte[bufferSize];
		         int read = 0;
		         while ((read = dis.read(buf))!=-1) {
		                fos.write(buf, 0, read);
		            }
		         fos.close();
		         System.out.println("客户端 读取数据完成...");
		         
		         
		         //写信号
                socket = new Socket(ip, port);
                dos = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));
                dos.writeUTF("ClientRecieved");
                System.out.println("客户端 发送 收到信号:ClientRecieved"+"\n");
			   // dos.flush();
			    dos.close();
			    
			    System.out.println("......客户端 接收数据结束...开始解压文件...");
				
			   
			}
			
			//解压数据
			if(!"".equals(fileABSPath) && ".zip".equals(fileABSPath.substring(fileABSPath.lastIndexOf(".")))){
				zipUtilObj.unzip(fileABSPath, CLIENT_SAVEPATH);	
			}
			//删除压缩文件
			boolean deleted=false;
			if(tempFile!=null){
				while(!deleted){
					deleted=tempFile.delete();
				}
			}
			
			//=======================客户端批量 读取文件 结束==================================//    
			 
			
			
			
		  //=======================客户端批量  发送文件    ==================================//   	
		
			File ZipFilePath=null;
		   
			getAllFiles(CLIENT_SENDPATH);
			
		   while(true){ 
		
			 if(new File(CLIENT_SENDPATH).renameTo(new File(CLIENT_SENDPATH))){
			
		     if(fileList.size()>0){
				 //压缩文件
    	     zipUtilObj.zip(CLIENT_SENDPATH+".zip", CLIENT_SENDPATH);
    	         //压缩文件绝对路径
    	     ZipFilePath=new File(CLIENT_SENDPATH+".zip");
    	    
    	     
    	    
    	    	 //写文件名
                socket = new Socket(ip, port);
                dos = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));
                dos.writeUTF(ZipFilePath.getName());
                System.out.println("客户端写文件名");
			   // dos.flush();
			    dos.close();
    	    	 
			  //读确认信息
			    socket = new Socket(ip, port);
	               dis= new DataInputStream(new BufferedInputStream(socket.getInputStream()));   
	  		      System.out.println(dis.readUTF());     
    	    
			
    	     //写数据
  	       
             
             socket = new Socket(ip, port);
  		   DataInputStream fis = new DataInputStream(new BufferedInputStream(new FileInputStream(ZipFilePath)));
  		   int bufferSize = 8192;
             byte[] buf = new byte[bufferSize];
             int read = 0;
             while ((read = fis.read(buf))!=-1) {
          	   dos = new DataOutputStream(socket.getOutputStream());  
                 dos.write(buf, 0, read);
             }
             dos.flush();
             fis.close();
             socket.close();
             System.out.println("客户端 写数据完成...");
             
             
            //读信号
             socket = new Socket(ip, port);
             dis= new DataInputStream(new BufferedInputStream(socket.getInputStream()));   
		     System.out.println("客户端 读信号:"+dis.readUTF()+"/n");    
			 
    	     }
		   break;
		     }
		 }
	   
				
			//客户端文件结束标志
			 System.out.println("客户端 没有数据发送或发送完成!");
    	     socket = new Socket(ip, port);
 		     dos = new DataOutputStream(socket.getOutputStream());  
 		     dos.writeUTF("clientFileSendOver");
		     dos.close(); 
    	  
	     
	  
		 
	    
		//删除发送完的zip文件
		 boolean deleted2=false;
			if(ZipFilePath!=null){
				while(!deleted2){
					deleted2=ZipFilePath.delete();
				}
			}
		  //=======================客户端批量 发送文件 结束    ==================================//    	
			
			
			
			
 }
		
		
	
     
     
     
     /*
 	 * 递归删除一个目录以及下面的文件
 	 */
 	public  boolean deleteDirectory(File path) {   
 	    if( path.exists() ) {   
 	      File[] files = path.listFiles();   
 	      for(int i=0; i<files.length; i++) {   
 	         if(files[i].isDirectory()) {   
 	           deleteDirectory(files[i]);  
 	         }   
 	         else {   
 	        	 //删除文件
 	           files[i].delete();   
 	         }   
 	      }   
 	    }   
 	   //删除目录
 	   boolean hasdelete=false;
	    if(!CLIENT_SENDPATH.equals(path.getAbsolutePath())){
 	     hasdelete=path.delete();
 	    if(hasdelete){
 	    	System.out.println("删除目录:"+path);
 	    	
 	    }
	    }
 		return hasdelete;
 	    
 	    
 	  }   
     
    

    
    /**
     * 得到服务端要发送的文件列表
     * @param dir
     * @return
     * @throws Exception
     */
 	 public void  getAllFiles(String dir) throws Exception{
     	File file=new File(dir);
     	 
     	if(!file.exists()){
     		file.mkdir();
     	}
     	File[] fs = file.listFiles();
 		 if(fs!=null){
 			 for(int i=0; i<fs.length; i++){
 				   if(fs[i].isFile()){
 					   fileList.add(fs[i].getAbsolutePath().substring(CLIENT_SENDPATH.length()));
 				   }
 				   if(fs[i].isDirectory()){
 				    try{
 				    	getAllFiles(fs[i].getPath());
 				    }catch(Exception e){}
 				   }
 				  } 
 		 }
 		  
 		 
   }

   
}


配置文件:
######### CLIENT_CONFIG #########
CLIENT_SENDPATH=D:\\SOCKET\\client_fa
CLIENT_SAVEPATH=D:\\SOCKET\\client_shou
SOCKET_PORT=8873
IP_ADDRESS=localhost

######### SERVER_CONFIG #########
SERVER_SENDPATH=D:\\SOCKET\\server_fa
SERVER_SAVEPATH=D:\\SOCKET\\server_shou






参数加载器:
package com.socket.filetrans;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;

public class LoadParamConfig {

	public static Properties  getProperties(){
		Properties	properties=new Properties();
		   URL url= Thread.currentThread().getContextClassLoader().getResource("config.properties");
		       InputStream in = null; 
		       if(url != null){
		        try {
					in = url.openStream();
					properties.load(in);
					//String path=properties.getProperty("importFilePath");
				} catch (IOException e) {
					e.printStackTrace();
				}
		       }
			return properties;
	}
	  

}



ZIP压缩和解压缩工具包:
package com.socket.zip.util;

import java.util.*;
import java.util.zip.*;
import java.io.*;

public class ZipUtil 
{
	public void zip(String zipFileName,String inputFile)throws Exception{
		zip(zipFileName,new File(inputFile));
	}
	public void zip(String zipFileName,File inputFile)throws Exception{
		ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipFileName));
		zip(out,inputFile,"");
		System.out.println("zip done");
		out.close();
	}

	public void unzip(String zipFileName,String outputDirectory)throws Exception{
		ZipInputStream in=new ZipInputStream(new FileInputStream(zipFileName));
		ZipEntry z;
		while ((z=in.getNextEntry() )!= null)
		{
			System.out.println("unziping "+z.getName());
			if (z.isDirectory())
			{
				String name=z.getName();
				name=name.substring(0,name.length()-1);
				File f=new File(outputDirectory+File.separator+name);
				f.mkdir();
				System.out.println("mkdir "+outputDirectory+File.separator+name);
			}
			else{
				File f=new File(outputDirectory+File.separator+z.getName());
				f.createNewFile();
				FileOutputStream out=new FileOutputStream(f);
				int b;
				while ((b=in.read()) != -1)
					out.write(b);
				out.close();
			}
		}

		in.close();
	}

	public void zip(ZipOutputStream out,File f,String base)throws Exception{
		System.out.println("Zipping  "+f.getName());
		if (f.isDirectory())
		{
			File[] fl=f.listFiles();
			out.putNextEntry(new ZipEntry(base+"/"));
			base=base.length()==0?"":base+"/";
			for (int i=0;i<fl.length ;i++ )
			{
				zip(out,fl[i],base+fl[i].getName());
			}
		}
		else
		{
			out.putNextEntry(new ZipEntry(base));
			FileInputStream in=new FileInputStream(f);
			int b;
			while ((b=in.read()) != -1)
				out.write(b);
			in.close();
		}

	}
	
	
	public static void main(String[] args) 
	{
		try{
		ZipUtil t=new ZipUtil();
		t.zip("D:\\wulihai\\SocketTrans.zip","D:\\wulihai\\SocketTrans");
		t.unzip("D:\\wulihai\\SocketTrans.zip","D:\\wulihai\\开发手册");
		}
		catch(Exception e){e.printStackTrace(System.out);}
	}
}

6
0
分享到:
评论
1 楼 wujianjun12315 2011-07-19  
 

相关推荐

    Socket文件传输

    Socket文件传输是一种网络通信技术,它允许两台计算机通过Internet或其他网络进行数据交换。在本软件中,MFC(Microsoft Foundation Classes)库被用来实现面向对象的编程,以构建一个功能完善的Socket文件传输系统...

    socket文件传输(TCP)源码实例

    在这个“socket文件传输(TCP)源码实例”中,我们将深入理解如何利用TCP协议通过socket进行文件传输。TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,确保了数据的...

    android Socket文件传输

    在Android平台上,Socket文件传输是一种常见的通信方式,尤其适用于设备间的文件共享,即使涉及的是大文件,如几十兆(MB)的数据。本文将深入探讨如何使用Android的Socket进行文件传输,以及实现过程中需要注意的关键...

    socket 文件传输编程 java

    在这个主题中,我们将深入探讨Java中的Socket文件传输编程以及多线程的应用。 首先,理解Socket的基本概念至关重要。Socket可以看作是网络上的端点,允许两个应用程序通过网络进行通信。在Java中,`java.net.Socket...

    C#Socket文件传输简单例子(将文件名和文件同时传输)

    在压缩包中的`SocketDemo`项目中,应该包含了实现这个功能的C#代码示例,你可以参考其中的`Server`和`Client`类,理解并学习如何使用Socket进行文件传输。通过实际操作,你会更深入地掌握C# Socket通信的核心技巧。

    MFC socket 文件传输

    标题"“MFC socket 文件传输”"指出,这个项目或教程主要关注如何使用MFC库来构建一个文件传输应用,该应用利用Socket技术进行文件的发送和接收。这通常涉及以下知识点: 1. **MFC基础**:理解MFC框架的基本结构,...

    socket文件传输代码

    本项目"socket文件传输代码"显然是一个利用Java实现的GUI(图形用户界面)应用,使得客户端能够向服务器端发送文件。 首先,我们来了解一下Socket的基本概念。Socket是TCP/IP协议族的一部分,它为两台机器上的进程...

    socket 文件传输源码

    在这个“Socket文件传输源码”中,我们很显然会看到如何使用Java的Socket类来实现在两个应用程序之间传输文件。以下是对这个主题的详细说明: 首先,我们要了解Socket的基本概念。Socket在计算机网络中扮演着桥梁的...

    基于WCF多线程的SOCKET文件传输服务

    **基于WCF多线程的SOCKET文件传输服务** 在软件开发中,文件传输是一个常见的需求,尤其是在分布式系统和网络应用程序中。WCF(Windows Communication Foundation)是微软提供的一种全面的面向服务的架构,用于构建...

    linux下的c++实现socket文件传输功能

    本篇文章将深入探讨如何利用C++在Linux下实现Socket文件传输。 首先,我们需要了解Socket的基本概念。Socket可以看作是两台计算机之间通信的端点,它提供了低级别的网络I/O接口。在Linux中,我们通常使用`socket()`...

    socket文件传输_断点_大文件都可以_vs2003

    通过阅读和理解这些资源,开发者可以更好地掌握Socket文件传输,尤其是大文件和断点续传的实现细节。 总的来说,Socket文件传输在VS2003环境下为开发者提供了强大的工具,通过合理的设计和优化,可以高效、可靠地...

    socket文件传输程序(用fopen).rar

    标题中的“socket文件传输程序(用fopen)”是指一个使用了socket编程接口,并结合fopen函数进行文件传输的应用程序。在计算机网络编程中,socket是实现进程间通信的重要工具,而fopen则是C语言中用于打开和读写文件...

    Socket文件传输源码

    1服务端接收文件,客户端发送文件。 2 每个Socket连接同时只能够传输一个文件。 3 可同时发送网络消息 网络消息的消息格式为: @+nnnnn+消息内容,其中@为消息头,nnnnn为消息...-24 -24 接收方出错,文件传输被取消

    linux下socket文件传输

    总结,Linux下的Socket文件传输涉及TCP连接的建立、文件的读写操作以及Socket API的使用。这种机制灵活且强大,适用于各种网络环境,包括标准PC和嵌入式系统。在实际开发中,需要结合具体需求,充分考虑性能、安全和...

    aio方式socket文件传输--改进

    "aio"(Asynchronous Input/Output)方式的socket文件传输是一种高效、非阻塞的通信模式,它利用异步I/O模型来提高系统性能。本文将深入探讨aio方式的socket文件传输及其在客户端和服务器端的应用。 首先,我们需要...

    简单socket文件传输(类似FTP)客户端

    本项目"简单socket文件传输(类似FTP)客户端"旨在实现一个简单的文件传输功能,模仿了FTP(File Transfer Protocol)协议的部分特性,如断点续传和多线程处理,以提高文件传输的效率和可靠性。 1. **Socket基础知识*...

    Socket_File_Send.rar_TCP 文件传输_socket 文件传输_socket+文件传输_tcp文件传输_文件

    至于"tcp文件传输"和"socket文件传输"标签,它们强调了使用TCP协议和Socket编程接口进行文件传输。这两个概念经常一起使用,因为TCP是Socket通信的基础协议,而Socket是实现TCP通信的应用层接口。 在"Socket_File_...

    Socket文件传输实例

    在实际应用中,Socket文件传输可能需要考虑更多因素,如错误处理、断点续传、多线程支持、安全加密(如SSL/TLS)、文件完整性校验等。同时,"$9 协议的),8;网络编程"这部分描述可能是指自定义的通信协议或者某种特定...

    vcSocketfile.rar_VC文件传输_socket传输文件_socket文件传输_vc 多线程_多线程传输

    "vcSocketfile.rar_VC文件传输_socket传输文件_socket文件传输_vc 多线程_多线程传输"这个压缩包文件提供了使用VC++(Visual C++)实现的多线程Socket文件传输的示例代码。下面我们将详细探讨这个主题中的关键知识点...

    多线程socket文件传输

    "多线程socket文件传输"是一个常见的应用场景,特别是在大数据交换、文件共享等需求中。本项目使用C语言实现了一个非阻塞的多线程socket文件传输程序,尽管可能存在一些问题,但对初学者来说,它能提供宝贵的实践...

Global site tag (gtag.js) - Google Analytics