Socket文件传输

原创 2013年12月04日 10:05:54

如果文件是字节类型的文件——音乐、电影、二进制文件等等,则只能使用inputStream和outputStream类

如果文件是字符类型的文件——文本文件等等,则可以使用Reader和Writer这两个类

 

如果使用Reader和Writer这两个类去读取二进制文件会出现异常,文件不是原来的,同样如果使用inputStream和outputStream类去读取文本文件(包含中文),会出现乱码现象,也会导致生产的文件大小不一致

 

下面使用DataInputStream和DataOutputStream读取和写文件,字节流和字符流都正常,能实现文件传输

 

服务器端

package hb.socket;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Calendar;

public class TCPServerReseiverFile {

	public static void main(String[] args) throws Exception{
		ServerSocket ss = new ServerSocket(6666);
		while(true){
			Socket s = ss.accept();
			InputStream is = s.getInputStream();
			DataInputStream dis = new DataInputStream(is);
			
			FileOutputStream fos = new FileOutputStream("C:\\"+getTimestamp());
			DataOutputStream dos = new DataOutputStream(fos);
			byte[] tempByte = new byte[1024];
			
			int byteread = 0;
			byteread = dis.read(tempByte);
			
			while(byteread != -1){
				dos.write(tempByte, 0, byteread);
				dos.flush();
				byteread = dis.read(tempByte);
			}
			fos.flush();
			fos.close();
			is.close();
			s.close();
		}
	}
	
	public static String getTimestamp(){
		Calendar c = Calendar.getInstance();
		Long timestamp = c.getTimeInMillis();
		return timestamp.toString();
	}
	
}

 

客户端

package hb.socket;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;

public class TCPClientSendFile {

	public static void main(String[] args) throws Exception {
		sendFile("c:\\music.mp3");
	}
	
	public static void sendFile(String urlFile)throws Exception{
		Socket s = new Socket("127.0.0.1", 6666);
		OutputStream os = s.getOutputStream();
		DataOutputStream dos = new DataOutputStream(os);
		
		FileInputStream fis = new FileInputStream(urlFile);
		DataInputStream dis = new DataInputStream(fis);
		byte[] tempByte = new byte[1024];
		
		int n = dis.read(tempByte);
		while(n!=-1){
			dos.write(tempByte, 0, n);
			dos.flush();
			n = dis.read(tempByte);
		}
		
		fis.close();
		dis.close();
		os.close();
		dos.close();
	}

}

 

 

Java Socket实现文件传输

最近学Socket学上瘾了,就写了一个简单的文件传输程序。 客户端设计思路:客户端与服务端建立连接,选择客户端本地文件,先将文件名及大小等属性发送给服务端,再将文件通过流的方式传输给服务端。传输的...
  • huang930528
  • huang930528
  • 2016年09月01日 17:00
  • 7578

Java Socket实现文件传输示例代码

这篇文章主要介绍了Java Socket实现文件传输示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 最近学Socket学上瘾了,就写了一个简单的文件传输...
  • maguanghui_2012
  • maguanghui_2012
  • 2017年02月07日 14:00
  • 1989

socket实现文件传输功能

要实现的功能为:client 从 server 下载一个文件并保存到本地。 编写这个程序需要注意两个问题: 1) 文件大小不确定,有可能比缓冲区大很多,调用一次 write()/send() 函数不...
  • yimingsilence
  • yimingsilence
  • 2017年06月03日 21:12
  • 1789

基于Socket的文件传输(使用CSocket类)

本软件使用MFC采用面向对象的方法实现了基于Socket的文件传输。这是原来研究生课程的结课作业,实现了Socket的发送和接收,以及读取ini配置文件等操作。 以下是当时结课作业 的正文:   ...
  • leixiaohua1020
  • leixiaohua1020
  • 2013年09月25日 18:38
  • 13921

socket文件传输示例

Server端代码: /*************************************************************************    > File Na...
  • xipiaoyouzi
  • xipiaoyouzi
  • 2015年02月06日 11:05
  • 1070

利用Socket实现多客户端传输对象和传输文件实现

第一次洗博客,纯属自己纪念,主要来源是慕课网的Socket通信课程,实现课后任务多客户端传输对象,自己遇到的最大问题是忘记给User类实现序列化接口。客户端实现:package com.imooc.t...
  • sinat_37518449
  • sinat_37518449
  • 2017年03月30日 11:25
  • 1015

socket文件传输功能的实现

这节我们来完成 socket 文件传输程序,这是一个非常实用的例子。要实现的功能为:client 从 server 下载一个文件并保存到本地。 编写这个程序需要注意两个问题: 1) 文件大小不...
  • softn
  • softn
  • 2016年06月02日 08:03
  • 2104

(高效开发)Android手机间使用socket进行文件互传实例

说明这是一个Android手机间文件传输的例子,两个手机同时装上此app,然后输入接收端的ip,选择文件,可以多选,点确定,就发送到另一个手机,一个简单快捷文件快传实例。可以直接运用到项目中。 ...
  • yuankundong
  • yuankundong
  • 2016年05月24日 14:28
  • 6288

java-Socket文件上传/进度条

客户端代码:   1、客户端运行程序: package wtb.khd; import java.awt.event.ActionEvent; import java.awt.event.A...
  • liuzhushiqiang
  • liuzhushiqiang
  • 2013年10月23日 15:51
  • 2503

C#网络编程(六、Socket文件传输)

转自:http://blog.csdn.net/shanyongxu/article/details/51204110,本人学习受益匪浅,楼主把重点都标记出来了,请点击链接查看原文,尊重楼主大大版权。...
  • qq_33337811
  • qq_33337811
  • 2017年05月31日 15:23
  • 2783
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Socket文件传输
举报原因:
原因补充:

(最多只允许输入30个字)