`
哈达f
  • 浏览: 119513 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

TCP多线程文件上传

    博客分类:
  • j2se
 
阅读更多
/*
上传图片
*/
import java.io.*;
import java.net.*;
class  JpgClient
{
	public static void main(String[] args) throws Exception
	{

		Socket s = new Socket("192.168.1.254",10005);

		if(args.length==0)
		{
			System.out.println("哥们,指定个文件,哦不?");
			return;
		}

		File file = new File(args[0]);
		if(!(file.exists() && file.getName().endsWith(".jpg")))
		{
			System.out.println("文件有问题");
			return ;
		}

		FileInputStream fis = new FileInputStream(args[0]);

		OutputStream out = s.getOutputStream();

		byte[] buf = new byte[1024*2];

		int len = 0;

		while((len=fis.read(buf))!=-1)
		{
			out.write(buf,0,len);
		}

		s.shutdownOutput();

		InputStream in = s.getInputStream();

		byte[] bufIn = new byte[1024];

		int lenIn = in.read(bufIn);

		System.out.println("server:"+new String(bufIn,0,lenIn));

		fis.close();
		s.close();
	}
}

class JpgThread implements Runnable
{
	private Socket s;
	JpgThread(Socket s)
	{
		this.s = s;
	}
	public void run()
	{
		FileOutputStream fos = null;
		try
		{
			int count = 0;
			String ip = s.getInetAddress().getHostAddress();

			System.out.println(ip+"...connect");

			File file = new File(ip+".jpg");
			while(file.exists())
			{
				file = new File(ip+"("+(count++)+").jpg");
			}

			InputStream in = s.getInputStream();

			fos = new FileOutputStream(file);

			byte[] buf = new byte[1024*2];

			int len = 0;
			while((len=in.read(buf))!=-1)
			{
				fos.write(buf,0,len);
			}

			OutputStream out = s.getOutputStream();

			out.write("上传成功".getBytes());

			
		}
		catch (Exception e)
		{
			System.out.println(e.toString()+"...");
		}
		finally
		{
			try
			{
				if(fos!=null)
					fos.close();
					
				if(s!=null)
					s.close();
			}
			catch (Exception ex)
			{
				System.out.println(ex.toString()+"......");
			}
			
		}
	}
}
class  JpgServer
{
	public static void main(String[] args) throws Exception
	{
		ServerSocket ss = new ServerSocket(10005);

		while(true)
		{
			Socket s = ss.accept();

			new Thread(new JpgThread(s)).start();
		}


	}
}

 

分享到:
评论

相关推荐

    Linux系统下基于Tcp的多线程大文件上传实现.pdf

    Linux系统下基于Tcp的多线程大文件上传实现.pdf 本文介绍了一种基于Tcp的多线程大文件上传实现方法,在Linux系统下实现大文件上传的解决方案。该方法通过将大文件分块,并使用多线程技术来实现文件传输,提高了文件...

    c++实现tcp多线程文件传输及进度打印

    总的来说,"c++实现tcp多线程文件传输及进度打印"项目涵盖了网络编程、多线程、文件操作等多个核心知识点,是一个很好的实践平台,可以帮助开发者深入理解这些技术,并提升其在实际问题中的应用能力。

    TCP/IP多线程上传文件

    本话题主要探讨了如何利用多线程技术实现TCP/IP协议在C++环境下进行文件上传,特别是结合MFC(Microsoft Foundation Classes)和Win32 API。下面我们将深入解析这个主题的相关知识点。 1. **TCP/IP协议**:传输控制...

    基于MFC的TCP客服端和服务器多线程文件传输

    在这个项目中,“基于MFC的TCP客服端和服务器多线程文件传输”实现了利用MFC进行TCP网络通信,并且支持多线程文件的上传和下载功能。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的...

    socket多线程文件上传下载实例

    在Java编程中,Socket...综上所述,这个Java Socket多线程文件上传下载实例涵盖了Socket通信、多线程处理以及文件操作等多个核心概念。通过实践这个实例,开发者可以深入理解网络编程和并发处理在实际应用中的运用。

    ftp多线程文件上传下载

    在实现FTP多线程文件上传下载时,有几个关键知识点: 1. **FTP协议理解**:首先要熟悉FTP的基本操作,如登录(USER/PASS)、目录浏览(LIST)、文件上传(STOR)和文件下载(RETR)。FTP有两种工作模式:主动模式...

    FTP多线程上传文件资料

    多线程FTP上传是指通过多个并发连接同时上传文件,以提高文件上传的速度和效率。这种技术尤其适用于大文件或大批量文件的传输,因为它可以充分利用网络带宽资源。 在实现FTP多线程上传时,我们需要考虑以下几个关键...

    基于TCP的局域网多用户通信、文件传送程序详解.rar_tcp 通信_基于TCP-IP多线程文件传输_多用户_局域网文件_飞鸽传

    基于TCP-IP的多线程文件传输是实现高效文件共享的关键。多线程技术允许程序同时处理多个任务,提高系统资源利用率。在网络环境中,这意味着可以同时开启多个TCP连接,分别负责不同的文件传输任务,从而提高文件传送...

    FTP多线程切割文件传输

    FTP多线程切割文件传输是IT领域中一种高效的数据传输技术,主要应用于大文件的上传和下载场景。在传统的FTP(文件传输协议)单线程传输中,如果文件较大,整个传输过程可能会消耗大量时间,影响用户体验。为了解决这...

    网络编程 多人聊天 TCP多线程

    在这个"网络编程多人聊天TCP多线程"项目中,开发者利用TCP协议和多线程技术创建了一个支持私聊、群聊、文件传输以及成员管理功能的聊天程序,主要涵盖了以下几个关键知识点: 1. **TCP协议**:TCP是一种面向连接的...

    tcp文件上传下载server和clien.rar_c_多线程_打印进度条_文件传输_服务器TCP

    在本项目中,多线程用于提高文件上传和下载的效率。例如,服务器可以开启多个线程分别处理来自不同客户端的请求,客户端也可以通过多线程并行上传或下载文件的不同部分,大大缩短了整体的传输时间。 **3. 打印...

    C++实现的TCP协议的文件传输

    总的来说,C++实现TCP协议的文件传输涉及网络编程、文件操作等多个方面,需要对操作系统底层原理有一定了解,同时也需要熟练掌握C++语言。通过这样的实践,不仅可以提升编程能力,也能加深对网络通信的理解。

    ftp.rar_ftp_ftp 代码_linux tcp transfer_tcp传输文件_基于TCP-IP多线程文件传输

    总的来说,实现基于TCP/IP的FTP文件传输程序是一个涉及网络协议、socket编程、多线程以及文件I/O等多个方面的综合性任务。这个过程可以帮助我们更好地理解网络通信的本质,并提升在Linux环境下开发网络应用程序的...

    tcp多线程服务器包括ftp服务器

    至于“core”这个文件,可能是服务器的核心代码或者库,包含实现TCP多线程服务器和FTP服务器功能的关键逻辑。具体实现细节可能包括线程池的使用、Selector的注册和轮询、FTP命令解析以及数据库操作接口等。 总的来...

    TCP/IP 下载上传文件

    本话题主要探讨如何在Linux操作系统环境下,使用C语言实现基于TCP/IP的文件上传与下载功能。以下将详细介绍相关知识点: 首先,我们需要理解TCP/IP协议族。TCP(传输控制协议)和IP(互联网协议)是最核心的两个...

    VC基于多线程的同步聊天,与文件传输

    在本文中,我们将深入探讨如何使用Microsoft Visual C++(简称VC)开发一个多线程的同步聊天及文件传输应用。这个项目结合了网络编程、多线程技术和文件操作,旨在实现客户端和服务端之间的实时通信和文件交换。 ...

    多线程网络文件传输源代码

    这种方式提高了服务器的并发性,使得多个用户可以同时进行文件上传或下载,避免了单线程模型中因一个任务耗时过长导致的阻塞问题。 客户端方面,多线程同样发挥着重要作用。例如,在大文件下载时,可以将文件分割成...

    VC_Socket_多线程文件传输

    《VC_Socket_多线程文件传输》是一个基于C++实现的项目,它演示了如何在Windows环境下使用Visual Studio 2005进行多线程的文件上传与下载功能。这个项目的核心技术主要包括Socket编程、多线程处理以及文件操作,这些...

    用C#实现HTTP协议下的多线程文件传输.doc

    本篇将深入探讨如何利用C#来实现HTTP协议下的多线程文件传输。 首先,理解HTTP协议是关键。HTTP(超文本传输协议)是互联网上应用最广泛的一种网络协议,用于从Web服务器传输超媒体信息到客户端。HTTP协议基于TCP/...

Global site tag (gtag.js) - Google Analytics