كتابة برنامج java لنقل الملفات (إرسال و استقبال) بين جهازين على شبكة محلية

كتابة برنامج java  لنقل الملفات (إرسال و استقبال) بين جهازين على شبكة محلية

كنت أبحث الأسبوع الماضي عن طريقة لإرسال ملفات من جهاز إلى آخر عن طريق الشبكة المحلية فوجدت كودا أعجبني لسهولته أدخلت عليه بعض التعديلات  ليصبح على الشكل التالي

import java.net.*;

import java.io.*;

public class FileServer {

public static void main (String [] args ) throws IOException {

// create socket

ServerSocket servsock = new ServerSocket(4007);

String requestedFile=null;

Socket sock;

ObjectInputStream ois=null;

while (true) {

System.out.println(“Waiting on “+servsock.getLocalPort()+”…”);

sock = servsock.accept();

System.out.println(“Accepted connection : ” + sock);

requestedFile=””;

// receive the request

ois = new ObjectInputStream(sock.getInputStream());

try {

requestedFile = (String) ois.readObject();

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

System.out.println(“the requested file is   “+ requestedFile);

// sendfile

File myFile = new File (requestedFile);

byte [] mybytearray  = new byte [(int)myFile.length()];

FileInputStream fis = new FileInputStream(myFile);

BufferedInputStream bis = new BufferedInputStream(fis);

bis.read(mybytearray,0,mybytearray.length);

OutputStream os = sock.getOutputStream();

System.out.println(“Sending…”);

os.write(mybytearray,0,mybytearray.length);

os.flush();

sock.close();

}

}

}

الـ Server   يقوم بإنشاء socket  (في هذا المثال الـ socket  حامل الرقم 4007)   و ينتظر الطلبات عليه

يجب أن يكون الملف المطلوب موجودا  (البرنامج هذا لا يدرس إمكانية عدم وجود الملف)

أما الـ client

import java.net.*;

import java.io.*;

public class FileClient{

public static void main (String [] args ) throws IOException {

int filesize=6022386; // filesize temporary hardcoded

long start = System.currentTimeMillis();

int bytesRead;

int current = 0;

// localhost for testing

Socket sock = new Socket(“192.168.20.2”,4007);

System.out.println(“Connecting…”);

// Request the file

ObjectOutputStream oos= new ObjectOutputStream(sock.getOutputStream());

oos.writeObject(“c:\\documents\\DocName.pdf”);

oos.flush();

// receive file

byte [] mybytearray  = new byte [filesize];

InputStream is = sock.getInputStream();

FileOutputStream fos = new FileOutputStream(“e:\\copy.pdf”);

BufferedOutputStream bos = new BufferedOutputStream(fos);

bytesRead = is.read(mybytearray,0,mybytearray.length);

current = bytesRead;

do {

bytesRead =

is.read(mybytearray, current, (mybytearray.length-current));

if(bytesRead >= 0) current += bytesRead;

} while(bytesRead > -1);

bos.write(mybytearray, 0 , current);

bos.flush();

long end = System.currentTimeMillis();

System.out.println(end-start);

bos.close();

sock.close();

}

}

يقوم بالاتصال بالـ server  الموجود على الجهاز صاحب الـ Ip    192.168.20.2  على الـ socket   4007

يرسل مسار الملف الذي يود تحميله

c:\\documents\\DocName.pdf

و يضعه بعد التحميل في

e:\\copy.pdf

الملفان المصدريان في المرفقات

http://www.4shared.com/file/108740152/8a4f9312/FilerRceiveFileServer.html

2 thoughts on “كتابة برنامج java لنقل الملفات (إرسال و استقبال) بين جهازين على شبكة محلية

التعليقات مغلقة.