Руководство по actionscript. часть 6, стр. 045

Отметим, что поведение сервера FileSender полностью автоматизировано: клиенту не требуется запрашивать элемент с сервера или отправлять подтверждение о получении элемента в каком-либо виде. Данная архитектура позволяет сконцентрироваться исключительно на процессе передачи элемента.

В листинге 28.12 представлен исходный код на языке Java для сервера FileSender, любезно предоставленный Дереком Клейтоном (Derek Clayton) для этой книги.

Листинг 28.12. Сервер FileSender

import java. net. ServerSocket:

import java. net. Socket;

import java. io. IOException;

import java. io. InputStream;

import java. io. File;

import java. io. FilelnputStream;

import java. iо. BufferedOutputStream;

/**

* FileSender — это простой сервер, который принимает сокетное соединение

* и передает файл, после чего соединение закрывается. *

* Использование: java FileSender [порт] [имя_файла]

* [порт] = порт, на котором сервер будет ожидать подключения (на всех

* локальных IP-адресах)

* [имя_файла] = путь к передаваемому файлу *

*/

public class FileSender implements Runnable { private int port; private File file; private String filename; private ServerSocket server; private Thread thisThread; private byte[] bytes;

public FileSender(int p, String f) { port = p; filename = f:

}

public void start( ) { InputStream is = null; try {

// — читаем файл в наш массив байтов

file = new File(filename):

is = new FilelnputStream(file);

bytes = new byte[(int)file. length( )+l];

int offset = 0;

int byteRead = 0;

while (offset < bytes.length

&& (byteRead=is. read(bytes, offset, bytes. length-offset)) >= 0) { offset += byteRead;

}

bytes[bytes.1ength-1] = 4;

// — создаем объект ServerSocket server = new ServerSocket(port); } catch (Exception e) { e. printStackTrace( ); System. exit(1); } finally {

if (is!= null) { try {

is. close( ); } catch (Exception e) { e. printStackTrace( ); System. exit(l);

}

}

}

// — запускаем объект Thread, который будет принимать подключения thisThread = new Thread(this); thisThread. start( );

}

public void run( ) {

// — пока сервер активен… while (thisThread!= null) {

BufferedOutputStream ps = null;

Socket socket = null ;

try {

// — …принимаем сокетные соединения

// (выполнение потока блокируется, пока не будет

// установлено соединение)

socket = server. accept( );

// — создаем выходной поток

ps = new BufferedOutputStream(socket. getOutputStream( ));

// — записываем байты и закрываем соединение ps. write(bytes); ps. close( );

ps = null; socket. close( ); socket = null; } catch(Exception e) { thisThread = null; e. printStackTrace( ): } finally {

if (ps!= null) { try {

ps. close( ); } catch (IOException e) { e. printStackTrace( ); System. exit(1);

}

}

if (socket!= null) { try {

socket. close( ); } catch (IOException e) {

e. printStackTrace( );

System. exit(1);

}

}

}

}

// — освобождаем ресурсы, занимаемые сервером if (server!= null) { try {

server. close( ); } catch (IOException e) { e. printStackTrace( ); System. exit(l);

}

}

}

public final static void main(String [] args) { // — проверяем, все ли аргументы указаны if (args. length!= 2) {

System. out. printlnC’usage: java FileSender [port] [file]«); System. exit(l);

}

try {

// — преобразуем аргументы к их соответствующему типу int port = Integer. parselnt(args[0]); String filename = args[l];

// — создаем и запускаем объект FileSender

// (который будет выполняться // в своем собственном потоке) FileSender fs = new FileSender(port, filename); fs. start< ); catch (exception e) { e.printstacktrace( ); system.exit(l);

S*4

Исходный код для сервера FileSender можно загрузить по адресу http://moock. org/eas3/ examples.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Оставить комментарий

Вы должны авторизоваться для отправки комментария.

Полезные ссылки
Случайные записи
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.26
  • 01.03.2011">Руководство по actionscript. часть 5, стр. 127
  • 14.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.72
  • 27.02.2011">Руководство по actionscript. часть 6, стр. 045
  • 15.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.53
  • 22.01.2011">Руководство по actionscript. часть 1, стр. 131
  • 13.02.2014">Преимущества МДФ панелей
  • 08.03.2011">Руководство по actionscript. часть 4, стр. 086
  • 05.11.2011">Как сделать кнопку для сайта
  • 16.03.2011">Руководство по actionscript. часть 3, стр. 031
  • 04.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.21
  • 03.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.58
  • 24.02.2011">Руководство по actionscript. часть 7, стр. 003
  • 26.02.2011">Руководство по actionscript. часть 6, стр. 054
  • 16.03.2011">Руководство по actionscript. часть 3, стр. 026
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...