/****************************/
/* サーバへファイルを転送 */
/* (クライアント) */
/* coded by Y.Suganuma */
/****************************/
import java.io.*;
import java.net.*;
public class Client1
{
public static void main(String[] args)
{
// サーバ名
if (args.length < 1) {
System.out.println("***error*** サーバ名を入力してください");
System.exit(1);
}
else
new Connect(args[0]).start();
}
}
/*
接続
*/
class Connect extends Thread
{
private String hostname;
public Connect(String hostname_i)
{
hostname = hostname_i;
}
public void run()
{
String line, f_name, str;
int bt, port = 50000;
try {
// 接続
Socket s = new Socket(hostname, port);
// ファイル名の入力
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
line = in.readLine();
System.out.print(line);
BufferedReader in_s = new BufferedReader(new InputStreamReader(System.in));
f_name = in_s.readLine();
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
out.println(f_name);
// ファイル名の送信
BufferedInputStream in_f = new BufferedInputStream(new FileInputStream(f_name));
BufferedOutputStream out_f = new BufferedOutputStream(s.getOutputStream());
// ファイル内容の送信
long k = 0;
while ((bt = in_f.read()) >= 0) {
out_f.write(bt);
k++;
}
out_f.flush();
System.out.println(k + " バイト送信しました");
// 接続を切る
s.close();
}
catch (IOException e) {
System.out.println("Error : " + e);
System.exit(1);
}
}
}
/****************************/
/* サーバへファイルを転送 */
/* (サーバ) */
/* coded by Y.Suganuma */
/****************************/
import java.io.*;
import java.net.*;
public class Server1
{
public static void main(String[] args)
{
int port = 50000;
try {
ServerSocket s_s = new ServerSocket(port);
System.out.println("Ready to Transfer");
for (;;) {
Socket s = s_s.accept( );
new Connect(s).start();
}
}
catch (Exception e) {
System.out.println(e);
}
}
}
/*
新しい接続
*/
class Connect extends Thread
{
private Socket s;
public Connect(Socket s_i)
{
s = s_i;
}
public void run()
{
int bt;
String str, f_name;
try {
// ファイル名
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
out.println("ファイル名を入力してください ");
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
f_name = in.readLine();
// 保存
BufferedOutputStream out_f = new BufferedOutputStream(new FileOutputStream(f_name));
BufferedInputStream in_f = new BufferedInputStream(s.getInputStream());
long k = 0;
while ((bt = in_f.read()) >= 0) {
out_f.write(bt);
k++;
}
out_f.close();
System.out.println(k + " バイト受け取りました");
// 終了
s.close();
}
catch (Exception e) {
System.out.println(e);
}
}
}