Tcp从Socket客户端上传文件到ServerSocket服务端

来源:互联网 发布:网络电视在线直播回看 编辑:程序博客网 时间:2024/05/07 23:38

目的:

从客户端上传指定的文件到服务端,服务端返回上传结果


思路:

一、客户端:

       1.创建客户端Socket,指定好IP地址和端口号

       2.创建要上传的文件流对象

       3.创建写入流(网络流),从Socket获取。将指定文件写入到网络流中,以便服务端接收

       4.从网络流中接收服务端返回的信息

       5.关闭流资源

二、服务端:

       1.创建服务端ServerSocket,并指定要监听的端口号

       2.用accept获取客户端对象,

       3.再获取客户端的网络输出流

       4.创建写入流对象,将获取到的网络输出流写入到硬盘中,进行持久化操作

       5.将上传信息(是否上传成功)写入到相对应的客户端写入流中,让客户端接收。

       6.最后完了之后,关闭流对象


注:因为是Tcp协议,所以在通信前要先创建连接。在测试时要先启动服务端程序。


示例:

import java.io.BufferedReader;import java.io.FileInputStream;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.Socket;/* * 客户端 *  * @author Tangtang * * 2015-6-16 */public class kehuduan {public static void main(String[] args) throws Exception {// 创建客户端Socket s = new Socket("192.168.1.102", 8888);// 创建要上传的文件对象InputStream input = new FileInputStream("F:\\b.txt");// 创建写入流OutputStream out = s.getOutputStream();// 自定义缓冲区byte[] buf = new byte[1024];int len = 0;while ((len = input.read(buf)) != -1) {out.write(buf, 0, len);}// 关闭输出流对象s.shutdownOutput();BufferedReader bufs = new BufferedReader(new InputStreamReader(s.getInputStream()));System.out.println(new String(bufs.readLine()));input.close();s.close();}}
import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;/* * 服务端 *  * 使用TCP协议写一个可以上传文件的服务器和客户端。 *  * @author Tangtang * * 2015-6-16 */public class Serversduan {public static void main(String[] args) throws Exception {// 创建服务端,并指定监听端口号ServerSocket ss = new ServerSocket(8888);// 获取客户端Socket s = ss.accept();// 获取客户端IpString ip = s.getInetAddress().getHostAddress();System.out.println(ip + "...连接成功!");// 得到客户端网络流(字节流文件)InputStream in = s.getInputStream();// 创建服务器端的写入流对象OutputStream out = new FileOutputStream("F:\\a.txt");// 定义缓冲区byte[] ch = new byte[1024];int len = 0;while ((len = in.read(ch)) != -1) {// 把客户端上传的文件写入到服务器中out.write(ch, 0, len);}// 返回给客户端的信息OutputStream outSoc = s.getOutputStream();outSoc.write("上传成功!".getBytes());out.close();s.close();ss.close();}}



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子不会做应用题怎么办 当你嫉妒别人怎么办 单位社保发票丢失怎么办 单位医保发票丢失怎么办 图书明细没有给怎么办 拼音拼不到一起怎么办 孩子不会拼拼音怎么办 小孩子不会拼拼音怎么办 小孩拼音发音不准怎么办 孩子声调不会标怎么办 孩子拼音发音不准怎么办 孩子学拼音不会怎么办? 孩子不会拼生字怎么办? 对数字不敏感怎么办 孩子说话不算数怎么办 儿童做事不认真怎么办 幼儿园小朋友爱打人怎么办 遇到熊孩子家长怎么办 小孩嘴烂了怎么办 孩子杯宠坏了怎么办 小孩子老爱打人怎么办 小孩偏执的性格怎么办 孩子上学爱打人怎么办 宝宝爱动手打人怎么办 幼儿爱打人教师怎么办 中班幼儿爱打人怎么办 幼儿园小班小朋友打人老师怎么办 2岁小朋友打人怎么办 幼儿爱乱讲话怎么办 幼儿园小孩打架老师怎么办 宝宝不自信胆小怎么办 小孩不尊重父母怎么办 孩子有洁癖应该怎么办 宝宝攻击性太弱怎么办 小孩在幼儿园打人怎么办 小孩说老师打人怎么办 孩子总动手打人怎么办 辅导小孩老发火怎么办 孩子喜欢咬人怎么办 小孩见家人不叫怎么办 孩子识字量差怎么办