还剩5页未读,继续阅读
文本内容:
客户端向服务端发送数据一网络编程LT服务器端源码;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.lOException;import java.io.Inputstream;import java.io.InputStreamReader;import java.net.ServerSocket;import java.net.Socket;**文ServerReceive.java工实现功能作为服务器接收客户端发送的文件*具体实现过程*
1、建立Socketserver,等待客户端的连接*
2、当有客户端连接的时候,按照双方的约定,这时要读取三行数据*其中保存客户端要发送的文件名和文件大小信息*
3、根据文件名在本地创建文件,并建立好流通信*
4、循环接收数据包,将数据包写入文闻*
5、当接收数据的长度等于提前文件发过来的文件长度,即表示文件接收完毕,关闭文件*
6、文件接收工作结束public classServerReceive{public staticvoid mainString[]args{卜与服务器建立连接的通信句柄★/ServerSocket ss=null;Socket s=null;义用于后接收后在本地创建的文件对象和文件输出流对象*/File file=null;FileOutputStream fos=null;/**定义输入流,使用socket的inputstream对数据包进行输入*/Inputstream is=null;/**定义byte数组来作为数据包的存储数据包*/byte[]buffer=new byte[4096*5];/**用来接收文件发送请求的字符串★/String comm=null;/**建立socekt通信,等待服务器进行连接*/try{ss=new ServerSocket4004;s=ss.accept;}catch lOExceptione{e.printStackTrace;}/**读取一行客户端发送过来的约定信息*/try InputStreamReaderisr=new lnputStreamReaders.getlnputStream;BufferedReader br=new BufferedReaderisr;comm=br.readLine;}catch lOExceptione{System,out,printing服务器与客户端断开连接}开始解析客户端发送过来的请求命令*/,Hint index=comm.indexOf7#;/**判断协议是否为发送文件的协议〜String xieyi=comm.substring0,index;n Hif!xieyi.equals111{服务器收到的协议码不正确return;/**解析出文件的名字和大小*/comm=comm.substringindex+2;nindex=comm.indexOf7#;String filename=comm.substring0,index.trim;String filesize=comm.substringindex+
2.trim;/★★创建空文件,用来进行接收文件//file=new Filefilename;if!file.exists{try{file.createNewFile;}catch lOExceptione{System.out.printin服务器端创建文件失败}else{/“在此也可以询问是否覆盖•/本路径已存在相同文件,进行橙盖/【以上就是客户端代码中写到的服务器的准备部分】7/**.服务器接收文件的关键代码•/try/”将文件包装到文件输出流时象中7fos=new FileOutputStreamfile;long filesize=Long.parseLongfilesize;is=s.getlnputStream;为每次接收数据包的长度•//“sizeint size=0;用来记录已接收到文件的长度.//“countlong count=0;/”使用循环接收数据包•/whilewhilecountfile__size{从输入流中读取一个数据包Vsize=is.readbuffer;/将刚刚读取的数据包写到本地文件中去•/fos.writebuffer,0,size;fos.flush;/*•将已接收到文件的长度+size•/count+=size;•服务器端接收到数据包,大小为-+size;}catch FileNotFoundExceptione{■服务器写文件失败;System.out.println}catch lOExceptione{-服务器客户端断开连接Systenout.primin}finally{L・将打开的文件关闭・如如需要,也可以在此关闭连接socket・7try{iffos!=nullfos.close;}catch lOExceptione{e.printStackTrace;}//catch lOExceptione}//finally}//public staticvoid mainStringQargs}//public classServerReceive客户瑞源码,import java.io.File;import java.io.FilelnputStream;import java.io.FileNotFoundException;import java.ioJOException;import java.io.OutputStream;import java.io.PrintStream;import java.net.Socket;.*文件名ClientSend.java实现功能作为客户端向服务器发送一个文件.•具体实现过程•、建立与服务器端的连接,•1IP
127.
0.
0.1,port
4004、将文件的名字和大小通过自定义的文件传输协议,发送到服务器•
2、循环读取本地文件,将文件打包发送到数据输出流中•
3、关闭文件,结束传输•4•7public classClientSend{public staticvoid mainStringQargs{r与服务器建立连接的通信句柄•/Socket s=null;〃•定义文件对象,即为要发送的文件如果使用绝对路径,不要忘记使用和的区别•7T具体区别,请读者自行钱询••7File sendfile=newFileHAPLCHMM/“定义文件输入流,用来打开、读取即将要发送的文件•/FilelnputStream fis=null;/**定必byte数组来作为数据包的存储数据包一二/byte[]buffer=new byte[4096*5];/**定义输出流,使用socket的outputstream对数据包进行输出*/Outputstream os=null;/**检查要发送的文件是否存在*/if!sendfile.exists{System,out,printing服务器连接中断二此处睡眠2s,等待服务器把相关的工作准备好}//catch lOExceptione客户端要发送的文件不存在return;/*涓服务器建立连接*/try{s=new Socket”
27.
0.
0.1”,4004;}catch lOExceptione{System.out,printing未连接到服务器}/**用文件对象初始化fis对象*以便于可以提取出文件的大小try{fis=new FilelnputStreamsendfile;}catch FileNotFoundExceptione1{e
1.printStackTrace;/★★首先先向服务器发送关于文件的信息,以便于服务器进行接收的相关准备工作*具体的准备工作,请查看服务器代码|1**发送的内容包括发送文件协议码此处为111/#文件名带后缀名/#文件大小try Printstreamps=new PrintStreams.getOutputStream;nps.println111/#+sendfile.getName+/#+fis.available;ps.flush;}catch lOExceptione{*也是为了保证网络的延迟*读者可自行选择添加此代码**/try{Thread.sleep2000;}catch InterruptedExceptione1{e
1.printStackTrace;/**之前的准备工作结束之后*下面就是文件传输的关键代码try{/**获取socket的Outputstream,以便向其中写入数据包*/os=s.getOutputStream;/**size用来记录每次读取文件的大小R intsize=0;/**使用while循环读取文件,直到文件读取结束*/whilesize=fis.readbuffer!=-1{客户端发送数据包,大小为+size;/**向输出流中写入刚刚读到的数据包*/os.writebuffer0,size;5卜*刷新一下*/os.flush;5}catch FileNotFoundExceptione{System.out.printin客户端读取文件出错}catch lOExceptione{System.out.printin客户端输出文件出错”;}finally{*将打开的文件关闭*如有需要,也可以在此关闭socket连接try{iffis!=null fis.close;}catch lOExceptione{System.out.printin客户端文件关闭出错}//finally}//public staticvoid mainString[]args}//public classClientSend。