具体需求是这样的:
server1有个文件x.war,server2发起一个http请求到服务器端server1下载文件x.war,具体的请求是http://server1/downloadservlet,然后这个请求会返回文件x.war,server2接到返回结果后直接把把该文件保存到目录c:/bak下。
在服务端起个socket监听,客户端链接,然后下载
以下例子是客户端将服务器上存放在d:\mp4\test.mp4保存到本地d:\test2.dat
但服务器只能处理单个请求,可以自己试试将它改成多线程支持,练习下下
package socket;
import java.io.*;
import java.net.*;
public class DataServer {
/**
* @param args
*/
public static final int SERVICE_PORT=1500;
public static final int DATA_SIZE=1024*30;
public static void main(String[] args) {
// TODO Auto-generated method stub
String filePath="d:"+File.separator+"MP4"+File.separator+"test.MP4";
File fileOut=new File(filePath);
if(!fileOut.exists()){
System.out.println("File Not Found");
return;
}
try{
ServerSocket server = new ServerSocket(SERVICE_PORT);
System.out.println("Service started");
for(;;){
Socket nextClient = server.accept();
System.out.println("Received request from " + nextClient.getInetAddress()+ ":"+ nextClient.getPort());
FileInputStream fis=new FileInputStream(fileOut);
OutputStream out =nextClient.getOutputStream();
PrintStream fileOutS = new PrintStream(out);
fileOutS.print(filePath+"\r\n");
byte[] bs = new byte[DATA_SIZE];
int length;
System.out.println("Sending data...");
while ( (length=fis.read(bs)) != -1){
out.write(bs,0,length);
bs = new byte[DATA_SIZE];
Thread.sleep(500);
}
System.out.println("Data sending completed");
fileOutS.close();
fis.close();
out.flush();
out.close();
nextClient.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
客户端
package socket;
import java.net.*;
import java.io.*;
public class DataClient {
public static final int SERVICE_PORT = 1500;
public static final int DATA_SIZE = 1024*60;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String hostName="192.168.10.201";
String filePath="D:"+File.separatorChar+"test2.dat";
try{
Socket client = new Socket(hostName,SERVICE_PORT);
System.out.println("Connection established");
System.out.println(client.getRemoteSocketAddress());
client.setSoTimeout(2000);
File file=new File(filePath);
if(file.exists()){
file.delete();
System.out.println("Create new file");
}
InputStream in = client.getInputStream();
BufferedReader readerFile = new BufferedReader(
new InputStreamReader(in));
DataInputStream reader = new DataInputStream(in);
FileOutputStream fos = new FileOutputStream(file);
String filename=readerFile.readLine();
System.out.println(filename);
byte[] bs = new byte[DATA_SIZE];
int length;
System.out.println("Data receiving started");
while( (length=reader.read(bs)) != -1){
fos.write(bs,0,length);
bs = new byte[DATA_SIZE];
Thread.sleep(200);
}
System.out.println("Receiving completed");
readerFile.close();
reader.close();
fos.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
分享到:
相关推荐
Socket通信的服务器端与客户端代码,用C# winform实现
服务器端流程: 1、创建套接字(socket)。 2、将套接字绑定到一个本地地址和端口上(bind)。 3、将套接字设为监听模式,准备接收客户请求(listen)。 4、等待客户请求到来;当请求到来后,接受连接请求,返回一...
1.建立Socket测试服务器端和测试客户端,并向其他端发送或接受报文数据,支持自动发送和自动应答,支持UDP和TCP; 2.录入的IP地址和端口等参数数据进行本地XML序列化,下次自动打开。(这个是我需要的,不用每次都...
Soket TCP服务器端Server+客户端Client实现相互通讯以及文件的互传。 下载文件后,会有俩个文件夹,一个是服务器一个是客户端,每个单独的文件夹都是一个可执行项目。 项目没有直接获取你本地的IP地址和端口,你需要...
客户端读取CSV文件,通过Socket传输给服务器端,排序后保存CSV文件,并传给客户端
socket简单的推送文件的功能,从客户端传到服务器端。原理是文件输入流读本地文件到字节数组里,再通过输出流传到服务器。在服务器端用输入流读到字节数组,再通过文件输出流写到本地。
实验报告 实验一 Socket编程 一、实验目的 通过socket程序的编写、调试,掌握socket编程的基本方法,了解客户端与服务器端的特点,掌握并熟悉运用socket类与ServerSocket类。 实验内容 学习socket编程使用的类和接口...
4. 基于Socket编程:编写客户端和服务器端代码,通过Socket建立连接,然后传输文件数据。 文件下载: 1. 链接下载:服务器端提供下载链接,用户使用浏览器、下载管理器或其他下载工具点击链接即可下载文件。 2. ...
1.建立Socket测试服务器端和测试客户端,并向其他端发送或接受报文数据,支持自动发送和自动应答,支持UDP和TCP; 2.录入的IP地址和端口等参数数据进行本地XML序列化,下次自动打开。(这个是我需要的,不用每次都...
在数据交换过程中,Socket 对象会负责将数据从发送端传输到接收端。 5. 关闭连接 当数据交换完成后,服务器端和客户端之间的连接可以关闭。关闭连接后,Socket 对象也会被关闭,以释放系统资源。 6. 销毁 Socket ...
1.在服务器端通过指定一个用来等待的连接的端口号创建一个ServerSocket实例。...3.服务器端在本地建立一个文本文件存储与客户端互传字符串的记录。 4.设计服务器端可以同时连接多个不同的客户端
服务器端采用了socketserver库,该库封装了socket模块,使得每个拨入的连接将被传入一个新的线程处理,从而实现多传感器通信的功能。 socket模块 socket模块运作模式如下: 1. 定义连接,端口族等(这些功能已经...
建立Socket测试服务器端和测试客户端,并向其他端发送或接受报文数据,支持自动发送和自动应答,支持UDP和TCP; 2.录入的IP地址和端口等参数数据进行本地XML序列化,下次自动打开。(这个是我需要的,不用每次都...
使用JAVA编写一个使用TCP协议传输文件的Socket,实现客户端向服务器端发送一个文件,服务器端接收之后按相同的文件名在指定的目录下保存文件
文件接收端开启Ap热点,作为服务器端建立Socket,在指定端口等待客户端的连接 文件发送端连接到Wifi热点,作为客户端主动连接到服务器端 文件发送端将待发送的文件信息模型(包括文件路径,文件大小和文件MD5码等...
打开APP后自动开启Socket等待连接,与客户端连接上后,自动开始发送数据。 - 一台手机作为接收端,右上方顶部ActionBar有一个按钮,点击后从本地图库添加图片和拍照获取图片。底部有一个按钮,连接上服务端之后点击...
本程序包含服务器端和本地端两部分,服务器端可部署在树莓派3B上,本地端部署在mac或者windows上。两者通过socket进行通信。服务器端接收指令后会对指令进行分类处理,比如执行一个opencv示例程序,本程序还附带了...
客户 - 服务器模型是网络编程的基本模型,客户端向服务器端发送请求,服务器端处理请求并将结果返回给客户端。 简单的服务器 简单的服务器使用 socket 编程接收来自客户端的连接请求,并处理客户端的请求。 简单的...
* 服务器端:使用Java语言编写,使用Socket API来实现网络通信,服务器端可以显示当前在线的用户信息,并对用户进入或断开的信息加以显示。 五、结论 本文设计并实现了一个基于Java Socket的聊天室系统,该系统...
简单易用,只需要几个类就能创建出健壮的Socket服务器端程序 性能优良, 稳定可靠 支持各种协议, 内置的协议解析工具让你把实现通信协议这种复杂的工作变得很简单 自动支持SSL/TLS传输层加密 强大,灵活而且可扩展的...