#java #serversocket
#java #serversocket
Вопрос:
Ниже приведена программа Java для TCP-сервера и TCP-клиента. Я поместил файл, который должен быть прочитан, в ту же папку, где существуют мои Java-программы. Теперь, когда я ввожу имя файла с TCP-клиента, TCP-сервер выдает вывод как файл не найден. Где я ошибаюсь? Ваша помощь действительно ценится.
TCP СЕРВЕР
import java.util.Scanner;
import java.net.*;
import java.io.*;
public class TcpServer{
public static void main(String[] args)throws IOException{
ServerSocket ss = null;
Socket s = null;
try{
ss = new ServerSocket(3000);
}
catch(Exception e){
e.printStackTrace();
}
while(true){
try{
System.out.println("Server Ready....");
s = ss.accept();
System.out.println("Client Connected...");
InputStream istream = s.getInputStream();
Scanner fread = new Scanner(new
InputStreamReader(istream));
String fileName = fread.nextLine();
System.out.println("Reading contents of " fileName);
Scanner contentRead = new Scanner(new
FileReader(fileName));
OutputStream ostream = s.getOutputStream();
PrintWriter pwrite = new PrintWriter(ostream , true);
while(contentRead.hasNext())
pwrite.println(contentRead.nextLine());
pwrite.close();
s.close();
}
catch(FileNotFoundException e){
OutputStream ostream = s.getOutputStream();
PrintWriter pwrite = new PrintWriter(ostream , true);
System.out.println("File Not Found");
pwrite.close();
}
}
}
}
TCP-КЛИЕНТ
import java.net.*;
import java.io.*;
import java.util.Scanner;
public class TcpClient{
public static void main( String[] args ){
Socket s;
while(true){
try{
s = new Socket("127.0.0.1",3000);
OutputStream ostream = s.getOutputStream();
System.out.println("Enter filename");
Scanner input = new Scanner(System.in);
String fname = input.nextLine();
PrintWriter pwrite = new PrintWriter(ostream, true);
pwrite.println(fname);
InputStream istream = s.getInputStream();
Scanner cRead = new Scanner(new InputStreamReader(istream));
while(cRead.hasNext())
System.out.println(cRead.nextLine());
pwrite.close();
s.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}
}
Ответ №1:
Я предполагаю, что вы запускаете серверное / клиентское приложение в системе Windows. Я думаю, что это проблема, связанная с именем пути. Поэтому вы можете передать имя файла с двойной обратной косой чертой, как показано в следующем примере:
C:\Documents and Settings\user\test.txt