我写了一个套接字程序,主机将接收文件,客户端将发送(据我所知)。然而,今天当我检查它时,我看到如果我运行主机,没有任何反应。但是当我运行客户端时,服务器端开始提示并要求我发送文件。然后服务器开始将文件发送到我的客户端PC。 这是代码 服务器端:
ServerSocket servsock = new ServerSocket(50000);
Socket sock = servsock.accept();
File to_b_encf = new File("input");
OutputStream out = sock.getOutputStream();
FileInputStream fileInputStream = new FileInputStream(to_b_encf);
byte[] buffer = new byte[64 * 1024];
int bytesRead = 0;
while ((bytesRead = fileInputStream.read(buffer)) != -1) {
if (bytesRead > 0) {
out.write(buffer, 0, bytesRead);
totalSent += bytesRead;
System.out.println("sent " + totalSent);
}
}
sock.close();
servsock.close();
fileInputStream.close();
客户端代码:
Socket sock = new Socket("172.16.27.106", 50000);
InputStream in = sock.getInputStream();
Scanner sc = new Scanner(System.in);
System.out.print("File path: ");
String output = sc.nextLine();
sc.close();
File fileName = new File(output);
fileOutputStream = new FileOutputStream(output);
// sending the actual file
byte[] buffer = new byte[64 * 1024];
bytesRead = 0;
while ((bytesRead = in.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, bytesRead);
totalRecieved += bytesRead;
}
sock.close();
fileOutputStream.close();
现在,除了我的文件发送和文件接收错误之外,我还有另外一个问题。 我想在没有任何路由器或LAN连接的帮助下将文件从一台笔记本电脑发送到另一台。所以,我想我需要一个特定应用网络。什么是最好的或安全的应用程序特定网络? Java是否为特定应用程序网络提供了任何库?顺便说一句,我不知道这个领域。这不是我目前对该项目的关注。只是为了抬头实际上。
谢谢。
答案 0 :(得分:0)
我写了一个套接字程序,主机将接收文件,客户端将发送(据我所知)
看起来服务器是发送文件并且客户端正在接收的服务器。
然而,今天当我检查它时,我看到如果我运行主机,没有任何反应。但是当我运行客户端时,服务器端开始提示并要求我发送文件。然后服务器开始将文件发送到我的客户端电脑。
这正是客户端 - 服务器应用程序的工作方式。服务器坐在那里等待客户端连接。在您的应用程序中,服务器实际上不会提示用户输入任何内容。所有提示都在您的客户端代码中。一旦客户端连接,服务器就会将其文件从套接字推送到客户端。
除了服务器和客户端实际执行的操作之间的混淆之外,我认为这个应用程序没有任何问题。
至于你的第二个问题,我无法帮助你。试着在另一个问题中提问。