Мне нужно спроектировать и реализовать итеративное приложение TCP-сервера, прослушивающее порт 1039, предоставляющее следующую услугу. Сервер может получить доступ ко всем файлам ASCII, хранящимся на его главной машине. Клиент запрашивает службу, отправляя путь к файлу (строка), затем сервер считывает указанный символ файла по символу, собирает символы до блоков по 2048 символов каждый (или меньше для последнего блока, когда заканчивается файл) и отправляет эти 2k блоков данных для клиента.java TCP итеративные серверы
Я подготовил следующий код. Однако я застрял в том, как я могу собрать символы в блоки по 2048 символов каждый (или меньше для последнего блока, когда достигнут конец файла) и отправляет эти 2k блоков данных клиенту.
import java.io.*;
import java.net.*;
import java.util.*;
public class TcpIterative {
public static void main(String[] args)
{
Socket clientSock = new Socket();
ServerSocket servSock;
int port = 1039;
try{
servSock = new ServerSocket(port);
while (true)
clientSock = servSock.accept();
BufferedInputStream inps = new BufferedInputStream(clientSock.getInputStream());
InputStreamReader isr = new InputStreamReader(inps);
String req = "";
int c= 0;
while ((c = isr.read())!=13)
{
req = req + (char)c;
}
BufferedOutputStream outs = new BufferedOutputStream (clientSock.getOutputStream());
OutputStreamWriter osw=new OutputStreamWriter(outs, "US-ASCII");
osw.write(responseBuffer);
osw.flush();
inps.close();
outs.close();
clientSock.close();
} catch (IOException ex)
{
System.out.println("Error");
}
}
}
Итак, ваши проблемы: 1. Как сделать 2k-пакет 2. Как заполнить последний пакет, когда его размер меньше 2K. 3. Как отправить пакет после этого? –
Да, это мои проблемы – user3074215