Java客户端和服务器-多请求
目前我正在尝试通过Java套接字发送文件。我可以成功地发送特定文件的请求,并将该文件取回。但是,当我尝试在不重新启动程序的情况下再次执行此操作时,我无法执行此操作 这是我的密码: 客户Java客户端和服务器-多请求,java,sockets,Java,Sockets,目前我正在尝试通过Java套接字发送文件。我可以成功地发送特定文件的请求,并将该文件取回。但是,当我尝试在不重新启动程序的情况下再次执行此操作时,我无法执行此操作 这是我的密码: 客户 System.out.print("What file do you want? "); name = consoleIn.readLine(); int bytesRead; if(!name.equals("!")) { InputStream in = null;
System.out.print("What file do you want? ");
name = consoleIn.readLine();
int bytesRead;
if(!name.equals("!")) {
InputStream in = null;
OutputStream output = null;
DataInputStream serverData = null;
while(!name.equals("!")) {
socketOut.println(name);
socketOut.flush();
InputStream is = null;
FileOutputStream fos = null;
BufferedOutputStream bos = null;
try {
is = socket.getInputStream();
} catch (IOException ex) {
System.out.println("Can't get socket input stream. ");
}
try {
fos = new FileOutputStream(name);
bos = new BufferedOutputStream(fos);
} catch (FileNotFoundException ex) {
System.out.println("File not found. ");
}
byte[] bytes = new byte[4000];
int count;
while ((count = is.read(bytes)) != -1) {
bos.write(bytes, 0, count);
}
System.out.println("Here");
bos.flush();
System.out.print("What file do you want? ");
name = consoleIn.readLine();
}
}
服务器
socket = serverSocket.accept();
System.out.println("Connection accepted!");
BufferedReader socketIn =
new BufferedReader(new InputStreamReader(socket.getInputStream()));
//PrintWriter socketOut = new PrintWriter(socket.getOutputStream());
String name;
BufferedReader fileIn;
String line;
name = socketIn.readLine();
System.out.println(name);
while((!name.equals("!")) && (!name.equals("*"))) {
File file = new File(rootDirectory, name);
byte[] bytes = new byte[4000];
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream out = new BufferedOutputStream(socket.getOutputStream());
int count;
System.out.println("Sending: " + name);
while ((count = bis.read(bytes)) != -1) {
out.write(bytes, 0, count);
}
out.flush();
System.out.println("Sent");
name = socketIn.readLine();
System.out.println(name);
}
没有提示我输入第二个请求。我很好奇
文件服务器:69
-您正在接受另一个阻止所有进程的用户套接字。
只要从服务器上删除这一行,所有这些都应该可以工作
此外,我建议您为每个已接受的套接字创建一个新线程。您可以提供更多或全部代码吗?那么它挂在哪里?“这里”是否打印出来?您还需要关闭客户端中的缓冲流。当然可以。这里是pastebins:和@Kayaman我关闭了它,但是新的提示没有出现。我一直在查看PasteBin只是为了弄清楚:)-这里的代码和pastebins之间有一些区别。嘿,谢谢你看一下。我试着取出69号线,但它仍然挂在某处。它不允许我输入新文件。