欢迎来到天天文库
浏览记录
ID:59524661
大小:19.50 KB
页数:7页
时间:2020-11-07
《客户端向服务端发送数据—网络编程.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、服务器端源码:importjava.io.BufferedReader;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.net.ServerSocket;importjava.net.Socket;/****文件名:ServerReceive.java*实现功能:作为服务器接收客户端
2、发送的文件**具体实现过程:*1、建立SocketServer,等待客户端的连接*2、当有客户端连接的时候,按照双方的约定,这时要读取一行数据*其中保存客户端要发送的文件名和文件大小信息*3、根据文件名在本地创建文件,并建立好流通信*4、循环接收数据包,将数据包写入文件*5、当接收数据的长度等于提前文件发过来的文件长度,即表示文件接收完毕,关闭文件*6、文件接收工作结束publicclassServerReceive{publicstaticvoidmain(String[]args){/**与服务器建立连接的通信句柄*/ServerSocketss=null;Sockets=null;/*
3、*定义用于在接收后在本地创建的文件对象和文件输出流对象*/Filefile=null;FileOutputStreamfos=null;/**定义输入流,使用socket的inputStream对数据包进行输入*/InputStreamis=null;/**定义byte数组来作为数据包的存储数据包*/byte[]buffer=newbyte[4096*5];/**用来接收文件发送请求的字符串*/Stringcomm=null;/**建立socekt通信,等待服务器进行连接*/try{ss=newServerSocket(4004);s=ss.accept();}catch(IOExcepti
4、one){e.printStackTrace();}/**读取一行客户端发送过来的约定信息*/try{InputStreamReaderisr=newInputStreamReader(s.getInputStream());BufferedReaderbr=newBufferedReader(isr);comm=br.readLine();}catch(IOExceptione){System.out.println("服务器与客户端断开连接");}/**开始解析客户端发送过来的请求命令*/intindex=comm.indexOf("/#");/**判断协议是否为发送文件的协议*/Str
5、ingxieyi=comm.substring(0,index);if(!xieyi.equals("111")){System.out.println("服务器收到的协议码不正确");return;}/**解析出文件的名字和大小*/comm=comm.substring(index+2);index=comm.indexOf("/#");Stringfilename=comm.substring(0,index).trim();Stringfilesize=comm.substring(index+2).trim();/**创建空文件,用来进行接收文件*/file=newFile(file
6、name);if(!file.exists()){try{file.createNewFile();}catch(IOExceptione){System.out.println("服务器端创建文件失败");}}else{/**在此也可以询问是否覆盖*/System.out.println("本路径已存在相同文件,进行覆盖");}/**【以上就是客户端代码中写到的服务器的准备部分】*//***服务器接收文件的关键代码*/try{/**将文件包装到文件输出流对象中*/fos=newFileOutputStream(file);longfile_size=Long.parseLong(files
7、ize);is=s.getInputStream();/**size为每次接收数据包的长度*/intsize=0;/**count用来记录已接收到文件的长度*/longcount=0;/**使用while循环接收数据包*/while(count
此文档下载收益归作者所有