50,523
社区成员
发帖
与我相关
我的任务
分享
public class pro1Receiver {
public static void main(String args[]){
try {
ServerSocket ss = new ServerSocket(9999);
Socket s = ss.accept();
String pathName = "D:\\prepare.txt"; //空文本,用来接收数据。
File file = createFile(pathName);
InputStream in = s.getInputStream();
FileOutputStream fos = new FileOutputStream(file);
System.out.println("开始接数据...");
byte[] buffer = new byte[1024];
int len = 0;
int dataCounter = 0;
while((len=in.read(buffer))!=-1){
fos.write(buffer, 0, len);
dataCounter+=len;
}
fos.close();
in.close();
s.close();
ss.close();
System.out.println("数据传输完毕,大小为" + dataCounter + "字节");
} catch (IOException e) {
e.printStackTrace();
}
}
public static File createFile(String pathName){
File file = new File(pathName);
if(file.exists()&&file.isFile()){
System.out.println("使用已存在的文件");
}
else{
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
return file;
}
}
public class pro2Sender {
public static void main(String[] args){
String pathName = "D:\\data.txt"; \\有内容的文本,期望将内容传输到 Receive端用来接收数据的文件里
File file = new File(pathName);
byte[] IP = new byte[]{127,0,0,1};
if (!(findFile(pathName))){
return;
}
System.out.println("正在连接到目标主机……");
try{
System.out.println("正在连接到目标主机...");
InetAddress addr = InetAddress.getByAddress(new byte[] { 127, 0, 0,1 });
Socket s = new Socket(addr, 9999);
OutputStream output = s.getOutputStream();
FileInputStream fis = new FileInputStream(sourceFile);
System.out.println("连接成功,正在传输数据...");
byte[] buffer = new byte[1024];
int len = 0;
int dataCounter = 0;
while ((len = fis.read(buffer)) != -1) {
output.write(buffer, 0, len);
dataCounter += len;
}
fis.close();
output.close();
s.close();
System.out.println("数据传送完毕,共传送" + dataCounter + "字节。");
}catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static boolean findFile(String pathName){
File file = new File(pathName);
if(file.isFile())
return true;
else return false;
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class pro2Sender {
public static void main(String[] args) {
String pathName = "D:\\data.txt";
File file = new File(pathName);
byte[] IP = new byte[] { 127, 0, 0, 1 };
if (!(findFile(pathName))) {
return;
}
System.out.println("正在连接到目标主机……");
try {
System.out.println("正在连接到目标主机...");
InetAddress addr = InetAddress.getByAddress(IP);
Socket s = new Socket(addr, 9999);
OutputStream output = s.getOutputStream();
FileInputStream fis = new FileInputStream(file);
System.out.println("连接成功,正在传输数据...");
byte[] buffer = new byte[1024];
int len = 0;
int dataCounter = 0;
while ((len = fis.read(buffer)) != -1) {
output.write(buffer, 0, len);
dataCounter += len;
}
fis.close();
output.close();
s.close();
System.out.println("数据传送完毕,共传送" + dataCounter + "字节。");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static boolean findFile(String pathName) {
File file = new File(pathName);
if (file.isFile())
return true;
else
return false;
}
}
接收端
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class pro1Receiver {
public static void main(String args[]) {
try {
ServerSocket ss = new ServerSocket(9999);
Socket s = ss.accept();
String pathName = "D:\\prepare.txt"; // 空文本,用来接收数据。
File file = pro1Receiver.createFile(pathName);
InputStream in = s.getInputStream();
FileOutputStream fos = new FileOutputStream(file);
System.out.println("开始接数据...");
byte[] buffer = new byte[1024];
int len = 0;
int dataCounter = 0;
while ((len = in.read(buffer)) != -1) {
fos.write(buffer, 0, len);
dataCounter += len;
}
fos.close();
in.close();
s.close();
ss.close();
System.out.println("数据传输完毕,大小为" + dataCounter + "字节");
} catch (IOException e) {
e.printStackTrace();
}
}
public static File createFile(String pathName) {
File file = new File(pathName);
if (file.exists() && file.isFile()) {
System.out.println("使用已存在的文件");
} else {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
return file;
}
}
output
关闭前 你是不是应该output.flush(); 操作一下呢