我需要设计和实现一个迭代的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