Tôi đã triển khai các máy chủ TCP đơn giản và các lớp máy khách TCP có thể gửi tin nhắn từ máy khách đến máy chủ và tin nhắn sẽ được chuyển thành chữ hoa ở phía máy chủ, nhưng làm thế nào tôi có thể đạt được chuyển các tập tin từ máy chủ cho khách hàng và tải lên các tập tin từ khách hàng đến máy chủ. các mã sau đây là những gì tôi đã có.cách triển khai máy chủ TCP và máy khách TCP trong java để chuyển các tệp
TCPClient.java
:
import java.io.*;
import java.net.*;
class TCPClient {
public static void main(String args[]) throws Exception {
String sentence;
String modifiedSentence;
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("127.0.0.1", 6789);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + "\n");
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER:" + modifiedSentence);
clientSocket.close();
}
}
TCPServer.java
:
import java.io.*;
import java.net.*;
class TCPServer {
public static void main(String args[]) throws Exception {
int firsttime = 1;
while (true) {
String clientSentence;
String capitalizedSentence="";
ServerSocket welcomeSocket = new ServerSocket(3248);
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
//System.out.println(clientSentence);
if (clientSentence.equals("set")) {
outToClient.writeBytes("connection is ");
System.out.println("running here");
//welcomeSocket.close();
//outToClient.writeBytes(capitalizedSentence);
}
capitalizedSentence = clientSentence.toUpperCase() + "\n";
//if(!clientSentence.equals("quit"))
outToClient.writeBytes(capitalizedSentence+"enter the message or command: ");
System.out.println("passed");
//outToClient.writeBytes("enter the message or command: ");
welcomeSocket.close();
System.out.println("connection terminated");
}
}
}
Vì vậy, TCPServer.java
sẽ được thực hiện đầu tiên, và sau đó thực hiện các TCPClient.java
, và tôi cố gắng sử dụng mệnh đề if trong TCPServer.java
để kiểm tra đầu vào của người dùng là gì, bây giờ tôi thực sự muốn triển khai cách truyền tệp từ cả hai phía (tải xuống và tải lên) .Cảm ơn.
http://stackoverflow.com/questions/4687615/how-to-achieve-transfer-file-between-client-and- server-using-java-socket –
Ngoài tất cả các câu trả lời, bạn có thể đọc tất cả các byte của bất kỳ tập tin nào cùng một lúc với [readAllBytes (...)] (http://docs.oracle.com/javase/8/docs/ api/java/nio/file/Files.html # readAllBytes-java.nio.file.Path-) và ghi chúng vào bất kỳ tệp nào w ith [write (...)] (http://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#write-java.nio.file.Path-byte: A-java.nio.file.OpenOption ...-). – thanopi57