网络编程之Socket通信实现文件的复制
2013-04-20 18:21
615 查看
代码1-1与代码1-2是一个java网络编程Socket通信的一个简单例子,服务端(先启动)监听客户端,当客户端启动时,服务端打印出客户端的输出的消息。
1-1 Socket通信之服务端的代码
1-2 Socket通信之客户端的例子的代码
先运行代码1-1,在运行代码1-2,在控制台打印如下信息:
上述客户端与服务端的通信,输入是客户端的一个字符串,那么根据 一个简单的文件读写、复制的例子和 一个简单的缓冲流读写的例子 的学习,可以利用Socket通信来实现文件的操作,即将文件的内容复制到另外一个文件中。
1-3 Socket通信实现文件的复制之服务端代码
1-4 Socket通信实现文件的复制之客户端代码
先运行代码1-3,在运行代码1-4,运行前e盘根目录不存在b.txt,a.txt文本文件的内容是:
运行后,在e盘根目录产生b.txt文本文件,文件的内容与a.txt相同(复制的内容),如图:
同时控制台打印如下信息:
从以上的代码可以看出,输入的可以是指定的字符串,也可以是文件内容,当然可以是输入设备输入的内容,可以看出他们的操作基本相同。
1-1 Socket通信之服务端的代码
import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; //先运行服务端,对客户端进行监听,接受客户端发送的信息 //注意这里只是展示Socket通信的简单例子,在实际使用中,对于异常应该捕获,最好不要抛出 public class Server { public static void main(String[] args) throws Exception { ServerSocket serverSocket=new ServerSocket(8888); Socket socket=serverSocket.accept(); InputStream is=socket.getInputStream(); //找到接口 //写出 byte[] buff=new byte[1024]; //缓冲,输出 int ch; System.out.println("服务端输出客户端传来的信息:"); while((ch=is.read(buff))!=-1){ for (int i = 0; i < ch; i++) { System.out.print((char)buff[i]); } } is.close(); } }
1-2 Socket通信之客户端的例子的代码
import java.io.OutputStream; import java.net.Socket; //客户端发出信息,服务端收到信息 public class Cilent { public static void main(String[] args) throws Exception { Socket socket=new Socket("127.0.0.1",8888); OutputStream outputStream=socket.getOutputStream();//对于客户端是输出,而对于服务端是输入 String str="Hello World!"; //客户端写入服务端的内容 outputStream.write(str.getBytes()); System.out.println("客户端启动"); outputStream.close(); socket.close();//关闭资源 } }
先运行代码1-1,在运行代码1-2,在控制台打印如下信息:
上述客户端与服务端的通信,输入是客户端的一个字符串,那么根据 一个简单的文件读写、复制的例子和 一个简单的缓冲流读写的例子 的学习,可以利用Socket通信来实现文件的操作,即将文件的内容复制到另外一个文件中。
1-3 Socket通信实现文件的复制之服务端代码
import java.io.FileOutputStream; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; //文件的复制 public class Server1 { public static void main(String[] args) throws Exception { ServerSocket ss=new ServerSocket(8888); Socket s=ss.accept(); InputStream is=s.getInputStream(); // 连接本机端口 //System.out.println("服务端启动成功!"); FileOutputStream fos=new FileOutputStream("e:\\b.txt"); //把要复制的文件内容复制到指定位置 byte[] buff=new byte[1024]; //缓冲流 //制到哪一个文件夹 int len; while((len=is.read(buff))!=-1){ fos.write(buff, 0, len); } fos.close(); is.close(); System.out.println("服务端启动成功!"); } }
1-4 Socket通信实现文件的复制之客户端代码
import java.io.FileInputStream; import java.io.OutputStream; import java.net.Socket; //实现同一台机子的不同磁盘的文件的复制,也可以实现不同机子连接的文件的复制,一台先启动服务端监听 //令外一台发送请求,成功连接后进行文件的复制 public class Cilent1 { public static void main(String[] args) throws Exception { Socket s=new Socket("127.0.0.1",8888); OutputStream out=s.getOutputStream(); //要复制的内容所在的路径,注意:文件一定要是存在的。 FileInputStream fis=new FileInputStream("e:\\a.txt"); System.out.println("客户端启动成功!"); byte[] buff=new byte[1024]; //缓冲流读入内存 int len; while((len=fis.read(buff))!=-1){ out.write(buff, 0, len); } System.out.println("文件内容已复制到指定的文件夹!"); fis.close(); s.close(); } }
先运行代码1-3,在运行代码1-4,运行前e盘根目录不存在b.txt,a.txt文本文件的内容是:
运行后,在e盘根目录产生b.txt文本文件,文件的内容与a.txt相同(复制的内容),如图:
同时控制台打印如下信息:
从以上的代码可以看出,输入的可以是指定的字符串,也可以是文件内容,当然可以是输入设备输入的内容,可以看出他们的操作基本相同。
相关文章推荐
- android网络编程 -- Socket 通信(03) 点对点Android聊天室实现(带服务器) [附源码分析]
- .Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--类设计2[使用IE浏览本页]
- .Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--使用封装的网络服务1
- 网络编程_TCP_Socket通信_聊天室_私聊_构思_实现JAVA193-194
- Python网络编程之基于socket实现文件上传
- DirectX编程:C#中利用Socket实现网络语音通信[初级版本]
- .Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--使用封装的网络服务1[使用IE浏览本页]
- linux网络编程之用socket实现简单客户端和服务端的通信(基于UDP)
- 网络编程:使用Socket实现简单的服务器和客户端的通信
- DirectX编程:C#中利用Socket实现网络语音通信[初级版本]
- .Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--使用封装的网络服务2
- Linux Socket 网络编程 基于GTK+ 的多线程实现的局域网通信软件
- java网络socket编程(四)之Socket扩展1--实现单文件服务器
- .Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--类设计1
- .Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--使用封装的网络服务2[使用IE浏览本页]
- java网络编程-利用datagramsocket和datagrampacket实现一台机器向另一台机器传文件
- DirectX编程:C#中利用Socket实现网络语音通信
- Linux Socket 网络编程 基于GTK+ 的多线程实现的局域网通信软件
- 试用socket api借口设计一个文件传送软件,并编程实现,可自定义文件传输的通信。
- DirectX编程:C#中利用Socket实现网络语音通信[初级版本]