TCP 上传文件

package liu.net.udpupload;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class UploadClient  {
public static void main(String[] args) throws UnknownHostException, IOException {
/* 上传文本的客户端。读取本地文本数据,发送给服务端,服务端接收完毕后,回馈“上传成功” */

System.out.println("客户端启动。。。");
//客户端 socket
Socket s = new Socket("127.0.0.1",8890);

//1.确定数据源,本地文件
BufferedReader bufr = new BufferedReader(new FileReader("text.txt"));

//2.确定目的地 socket 输出流
//BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
PrintWriter pw = new PrintWriter(s.getOutputStream(),true);

String line = null;
while((line=bufr.readLine())!=null){
pw.println(line);
}

//用socket的禁用流输出方法,告诉服务端文件传说完成,否则服务端不知道文件传输完成
s.shutdownOutput();

//3.通过 socket 读取服务端返回的数据
BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
String lineIn = bufIn.readLine();
System.out.println(lineIn);

//关闭
bufr.close();
s.close();
System.out.println("客户端关闭成功");

}
}

package liu.net.udpupload;

import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class UploadServer {
	public static void main(String[] args) throws IOException {
		//上传文本到服务端,服务端接收数据并存储到文件中,服务端接收完毕后,服务端回馈“接收成功”
		System.out.println("服务端启动。。。");
		//1.服务端对象
		ServerSocket ss= new ServerSocket(8890);

		//2.获取客户端
		Socket s = ss.accept();

		//3.获取读取流
		BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

		//4.确定目的文件
		PrintWriter pw = new PrintWriter(new FileWriter("server.txt"),true);

		//5.频繁读写
		String line = null;
		while((line=bufIn.readLine())!=null){
			pw.println(line);

		}

		//6.给客户端返回信息
		PrintWriter out = new PrintWriter(s.getOutputStream(),true);
		out.println("上传成功");

		//7.关闭资源
		pw.close();
		s.close();
		ss.close();
		System.out.println("服务端成功关闭");

	}

}
时间: 2024-12-28 16:06:39

TCP 上传文件的相关文章

TCP上传文件 遇到发现一些问题

public class TCPServerFs implements Runnable{ private Socket s; public TCPServerFs(Socket s) { super(); this.s = s; } @Override public void run() { // TODO Auto-generated method stub //读取文件名 try { InputStream in = s.getInputStream(); //读取上传的文件名 byte[

TCP、UDP练习题 (UDP聊天程序、TCP上传文本文件和图片文件)

TCP.UDP编程练习 TCP ☆上传文本文件 读取一个本地文本文件,将数据发送到服务端,服务器端对数据进行存储. 存储完毕后,给客户端一个提示. 一.解题思路 客户端:(1) 创建Socket对象----用服务器的ip+端口号 (2)读取文件内容 (3)通过socket把内容发送给服务器端(把socket中的输出流包装成"打印流"来进行发送文本,是一种比较安全的输出方式,不会出现失真.) 服务器端:(1) 创建服务器socket---ServerSocket (2)通过ServerS

黑马程序员 【】java学习之路——TCP(三)客户端上传文件到服务器

------- <a href="http://www.itheima.com" target="blank">android培训</a>.<a href="http://www.itheima.com" target="blank">java培训</a>.期待与您交流! ---------- import java.io.*; import java.net.*; class

使用Servlet上传文件

使用浏览器向服务器上传文件其本质是打开了一个长连接并通过TCP方式传输数据.而需要的动作是客户端在表单中使用file域,并指定该file域的name值,然后在form中设定enctype的值为multipart/form-data和method值为post.其他就如同一般表单一样.示例如下: <form name="form" action="uploadbyservlet1" enctype="multipart/form-data" m

[转]如何使用multipart/form-data格式上传文件

form表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码.默认情况,这个编码格式是"application/x-www-form-urlencoded",不能用于文件上传:只有使用了multipart/form-data,才能完整的传递文件数据. 有时,在网络编程过程中需要向服务器上传文件.Multipart/form-data是上传文件的一种方式. Multipart/form-data其实就是浏览器用表单上传文件的

iOS 网络请求 NSURLSession 的上传文件方法

NSURLSession/NSURLConnection的上传文件方法 此篇文章的理论基础主要是与HTTP网络通信协议相关.为集中精力,可以先把TCP/IP协议这些置之不理,也就是先只关注HTTP的请求和响应的结构.HTTP完整的原理内容就此略过.在此只略提相关内容.文中涉及的设计源码可以通过这里获取 https://github.com/wuqingjian2015/uploadHelper,有意者可以去看看. HTTP是干什么用的呢? 先考虑一下以下应用过程: 从客户端向服务器端发起一个请求

HTTP的上传文件实例分析

HTTP的上传文件实例分析 由于论坛不支持Word写文章发帖. 首先就是附件发送怎么搞,这个必须解决.论坛是php的.我用Chrome类浏览器跟踪请求,但是上传的文件流怎么发过去没找到,估计流可能多或者什么的不好显示,只知道发送了文件名字.需要实际了解下post文件,不能只会后台或界面不了解前台数据处理和协议怎么传送数据. 图中:有些相关文章 HTTP请求中的form data和request payload的区别 AJAX POST请求中参数以form data和request payload

如何使用multipart/form-data格式上传文件(POST请求时,数据是放在请求体内,而不是请求头内,在html协议中,用 “\r\n” 换行,而不是 “\n”)

在网络编程过程中需要向服务器上传文件.Multipart/form-data是上传文件的一种方式. Multipart/form-data其实就是浏览器用表单上传文件的方式.最常见的情境是:在写邮件时,向邮件后添加附件,附件通常使用表单添加,也就是用multipart/form-data格式上传到服务器. 表单形式上传附件 具体的步骤是怎样的呢? 首先,客户端和服务器建立连接(TCP协议). 第二,客户端可以向服务器端发送数据.因为上传文件实质上也是向服务器端发送请求. 第三,客户端按照符合“m

C# 通过WebService方式 IIS发布网站 上传文件到服务器

应用场景:要将本地的文件 上传到服务器的虚拟机上 网络环境:公司局域网(如下图中第二种) 开发环境:VS2010 服务器环境:WinServer2008    虚拟机环境:WinServer2008 我的程序结构目录 AppSrvice 是服务文件 将来发布了以后要放到服务器上, WindowFormsAppp 是Winform程序 第一步: 创建一个新的: Windows窗体应用程序 using System;using System.Collections.Generic;using Sys