我需要設計和實現一個迭代的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