`

34、TCP并发上传,URL

阅读更多

一、TCP并发上传任意文件

 

    服务器端要用到多线程技术

 

import java.io.*;
import java.net.*;
class Client
{
	public static void main(String[] args)throws Exception
	{
		//创建客户端的socket服务,指定目的主机和端口
		Socket s = new Socket("192.168.0.253",10000);

		FileInputStream fis = new FileInputStream("e:/装机软件_29001.zip");

		BufferedReader brIn = 
			new BufferedReader(new InputStreamReader(s.getInputStream()));

		OutputStream os = s.getOutputStream();

		byte[] buf = new byte[1024];
		int len = 0;
		while((len = fis.read(buf))!=-1)
		{
			os.write(buf,0,len);
		}
		//加上结束标记
		s.shutdownOutput();

		String res = brIn.readLine();
		System.out.println(res);
		s.close();
		fis.close();
	}
}
class Server
{
	public static void main(String[] args)throws Exception
	{
		ServerSocket ss = new ServerSocket(10000);
		
		while(true)
		{
			Socket s = ss.accept();
			new Thread(new Method(s)).start();
		}
	}
}
class Method implements Runnable
{
	Socket s;
	Method(Socket s)
	{
		this.s = s;
	}
	public void run()
	{
		int count = 0;
		try
		{			
			String ip = s.getInetAddress().getHostAddress();
			System.out.println(ip+" 连接....");

			InputStream is = s.getInputStream();

			File file = new File("d:/a.zip");
			while(file.exists())
				file = new File("d:/a"+(count++)+".zip");
			FileOutputStream fos = new FileOutputStream(file);

			BufferedWriter bwOut = 
				new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));

			byte[] buf = new byte[1024];
			int len = 0;
			while((len=is.read(buf))!=-1)
			{
				fos.write(buf,0,len);
			}
			bwOut.write("上传成功");
			bwOut.newLine();
			bwOut.flush();
			s.close();
		}
		catch (Exception e)
		{
			System.out.println("上传失败");
		}
	}
}

 

二、URL

 

  1. 类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。
  2. 资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。
public final class URL implements Serializable
{
	//根据 String 表示形式创建 URL 对象
	public URL(String spec)throws MalformedURLException{}

	//获取与此 URL 关联协议的默认端口号
	public int getDefaultPort(){}

	//获取此 URL 的文件名。返回的文件部分将与 getPath() 相同,再加上 getQuery() 值的规范化形式(如果有)。
	public String getFile(){}

	//获取此 URL 的主机名(如果适用)。
	public String getHost(){}

	//获取此 URL 的路径部分。
	public String getPath(){}

	//获取此 URL 的端口号
	public int getPort(){}

	//获取此 URL 的协议名称
	public String getProtocol(){}

	//获取此 URL 的查询部分
	public String getQuery(){}

	//返回一个 URLConnection 对象,它表示到 URL 所引用的远程对象的连接。 
	//每次调用此 URL 的协议处理程序的 openConnection 方法都打开一个新的连接。
	public URLConnection openConnection()
                             throws IOException{}
}

 

import java.net.*;

public class URLTest {

	public static void main(String[] args) throws MalformedURLException {
		URL url = new URL("http://pan.baidu.com/disk/home?dir/path=%2Fday24");
		System.out.println(url.getHost());// pan.baidu.com
		System.out.println(url.getProtocol());// http
		System.out.println(url.getPort());// -1
		System.out.println(url.getDefaultPort());// 80
		System.out.println(url.getPath());// /disk/home
		System.out.println(url.getFile());// /disk/home?dir/path=%2Fday24
		System.out.println(url.getQuery());// dir/path=%2Fday24
	}
}

 

三、URLConnection

 

  1. 抽象类 URLConnection 是所有类的超类,它代表应用程序和 URL 之间的通信链接。
  2. 此类的实例可用于读取和写入此 URL 引用的资源
  3. 通常,创建一个到 URL 的连接需要几个步骤
  4. 通过在 URL 上调用 openConnection 方法创建连接对象。 
  5. 处理设置参数和一般请求属性。 
  6. 使用 connect 方法建立到远程对象的实际连接。 
  7. 远程对象变为可用。远程对象的头字段和内容变为可访问
public abstract class URLConnection
{
	//打开到此 URL 引用的资源的通信链接(如果尚未建立这样的连接)。 
	public abstract void connect()
                      throws IOException{}

	//返回从此打开的连接读取的输入流。
	public InputStream getInputStream()
                           throws IOException{}

	//返回写入到此连接的输出流。
	public OutputStream getOutputStream()
                             throws IOException{}
}

 

import java.io.*;
import java.net.*;

public class URLTest {

	public static void main(String[] args) throws IOException {
		URL url = new URL("http://www.baidu.com");
		URLConnection con = url.openConnection();
		BufferedReader br = 
				new BufferedReader(new InputStreamReader(con.getInputStream(),"utf-8"));
		String line = null;
		while((line=br.readLine())!=null)
		{
			System.out.println(line);
		}
	}
}

 

分享到:
评论

相关推荐

    python入门到高级全栈工程师培训 第3期 附课件代码

    08 django的url控制系统 09 django的urlConf补充 第50章 01 django之视图函数的介绍 02 django视图之redirec 03 django模板之变量 04 django模板之过滤器 05 django模板之控制语句if和for循环 06 django模板之标签...

    C#开发经验技巧宝典

    1090 如何上传本地文件到指定URL资源 657 1091 如何查找网页中所有的超级链接 658 1092 如何开发UDP协议聊天程序 659 1093 如何开发TCP/IP聊天室 660 1094 如何发送电子邮件 662 1095 如何接收电子邮件 ...

    2017最新大数据架构师精英课程

    本资源为大数据基础到中高级教学资源,适合稍微有点大数据或者java基础的人群学习,资源过大,上传乃是下载链接,不多说,上目录: 1_java基础2 l3 a2 a$ t7 J2 b+ `- p 2_java引入ide-eclipse 3_java基础知识-循环...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    java开源包1

    BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4...

    java开源包11

    BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4...

    java开源包2

    BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4...

    java开源包3

    BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4...

    java开源包6

    BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4...

    java开源包5

    BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4...

    java开源包10

    BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4...

    java开源包4

    BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4...

    java开源包8

    BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4...

    java开源包7

    BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4...

    java开源包9

    BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4...

    java开源包101

    BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4...

    Java资源包01

    BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4...

    IIS6.0 IIS,互联网信息服务

    在本地路输入框后点击浏览可以更改网站所在文件位置,默认目录为:C:\Inetpub\wwwroot 在执行权限后面点击配置-调试-教本错误信息,选中:向客户端发送文本错误信息:处理 URL 时服务器出错。请与系统管理员联系。...

Global site tag (gtag.js) - Google Analytics