Как указано в моем заголовке, я пытаюсь создать очень простую службу передачи файлов в java. Прямо сейчас, все, что я смог сделать, создать простой клиент/сервер, который может отправлять и получать строки текста. Вот код:Java - возникли проблемы с попыткой создать простую службу передачи файлов
UDPClient.java:
import java.io.*;
import java.net.*;
class UDPClient {
public static void main(String args[]) throws Exception
{
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader
(System.in));
DatagramSocket clientSocket = new DatagramSocket();//port # is assigned by OS to the client
InetAddress IPAddress =
InetAddress.getByName("localhost");
byte[] receiveData = new byte[1024];
String sentence = inFromUser.readLine();
byte[] sendData = sentence.getBytes();
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length,
IPAddress, 7777); //data with server's IP and server's port #
clientSocket.send(sendPacket);
DatagramPacket receivePacket =
new DatagramPacket(receiveData,
receiveData.length);
clientSocket.setSoTimeout(1000);
clientSocket.receive(receivePacket);
// we still need to catch the exception and retry
String modifiedSentence =
new String(receivePacket.getData(),
0,
receivePacket.getLength());
System.out.println("FROM SERVER:" +
modifiedSentence);
clientSocket.close();
}
}
UDPServer.java
import java.io.*;
import java.net.*;
class UDPServer {
public static void main(String args[]) throws Exception
{
DatagramSocket serverSocket = new
DatagramSocket(7777); //server will run on port #9876
byte[] receiveData = new byte[1024];
while(true)
{
DatagramPacket receivePacket =
new DatagramPacket(receiveData,
receiveData.length);
serverSocket.receive(receivePacket);
String sentence = new String(
receivePacket.getData(),
0,
receivePacket.getLength());
InetAddress IPAddress =
receivePacket.getAddress(); //get client's IP
int port = receivePacket.getPort(); //get client's port #
System.out.println("client's port # =" + port);
System.out.println("client'sIP =" +IPAddress);
System.out.println("client's message =" +sentence);
String capitalizedSentence =
sentence.toUpperCase();
byte[] sendData = capitalizedSentence.
getBytes();
DatagramPacket sendPacket =
new DatagramPacket(sendData,
sendData.length,
IPAddress, port);
serverSocket.send(sendPacket);
}
}
}
В конце концов, что я хотел бы сделать, это отправить файл путь к серверу, есть сервер верните файл и сохраните его в заданном месте, например C: \ Desktop \ Folder.
Я действительно в недоумении, как продвигаться вперед, где я, поэтому любые советы, указатели или ресурсы, которые вы могли бы поделиться, были бы замечательными. Я очень новичок в этом и чувствую выход из своей глубины.
Спасибо!
Вот один указатель: не используйте 'UDP' для передачи файлов, его ненадежной, используйте вместо' TCP'. – Reimeus
@Reimeus На самом деле это [User Datagram Protocol] (http://www.ietf.org/rfc/rfc768.txt). – EJP