package cc12;
//服务器端
import java.net.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.io.*;
/** *
* Socketserver客户端读取文件并保存本文件
*
* * * */
public class ServerFFFFF {
private static ServerSocket ss = null;
private static Socket s = null;
private static File f = null;
private static RandomAccessFile fw = null;
public static void main(String[] args) {
ServerFFFFF sk = new ServerFFFFF();
sk.initServer(1234);
sk.getFile();
}
/**
* * 初始化服务器端 * @param port *
* 服务器端要使用端口
* */
public void initServer(int port){
try {
ss = new ServerSocket(port);
s = ss.accept();
} catch (IOException e) {
e.printStackTrace();
}
}
// SocketClient读取文件
public void getFile() {
byte[] b = new byte[1024];
try {
//定义输入流
s.getInputStream();
InputStream in = s.getInputStream();
DataInputStream dis = new DataInputStream(new BufferedInputStream(in));
//创建要保存文件
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd_HHmmss");//设置日期格式
String time=df.format(new Date());// new Date()为获取当前系统时间
//time="ccc";
f = new File("d:/he/"+File.separator+time+".txt");
System.out.println(f);
fw = new RandomAccessFile(f, "rw");
int num = dis.read(b);
while (num != -1) {
//向文件写入0~num字节
fw.write(b, 0, num);
//跳num字节再写入文件
fw.skipBytes(num);
//读取num字节
num = dis.read(b);
}
//关闭输入输流
dis.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package cc12;
//客户端
import java.net.*;
import java.io.*;
/** *
* SocketServerSocketClient接受文件名文件发送SocketServer端保存
*
* * * */
public class ClientFFFFF {
private static File f = null;
private static FileInputStream fis = null;
private static DataOutputStream dout = null;
private static Socket s = null;
public static void main(String[] args) {
ClientFFFFF sc = new ClientFFFFF();
sc.connectSocketServer(1234);
sc.sendFile("d:/he/lizhi.txt");
}
/**
*
* * 连接服务器端 * * @param port *
* 要连接服务器SocketServer端口
**/
public void connectSocketServer(int port) {
try {
s = new Socket(InetAddress.getLocalHost(), port);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
// 发送文件
public void sendFile(String str) {
byte[] b = new byte[1024];
f = new File(str);
try {
//数据输流
dout = new DataOutputStream(new BufferedOutputStream(s.getOutputStream()));
//文件读入流
fis = new FileInputStream(f);
int n = fis.read(b);
while (n != -1) {
//向网络写入数据
dout.write(b, 0, n);
dout.flush();
//再读取n字节
n = fis.read(b);
}
//关闭流
fis.close();
dout.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}