クライアントとサーバプロジェクトで、各クライアント&サーバが互いにファイルを送信します。プログラムの目的は、両端でファイルを送受信していることです。 プログラムはローカルホスト上で非常に完璧に動作しますが、2台のマシンに実装するとエラーが発生しますが、サーバマシンIPを指定してもエラーは発生します。私は、プログラムがマシン上で動作するのを妨げる可能性のある原因が何であるかを知りたいだけです。クライアントで私のプログラムはローカルホストで完璧に動作していますが、2台のマシンに実装するとエラーが発生します
サーバ側
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JOptionPane;
class ServerHandler {
PrintStream printStream;
public ServerHandler(){
}
public static void main(String [] args){
new ServerHandler().sentIT("Super_woman.avi");
}
public void sentIT(String pathName) {
try {
ServerSocket server = new ServerSocket(65141);
System.out.println("Server Started");
Socket socket = server.accept();
System.out.println(" "+socket.getLocalAddress());
int BUFFER_SIZE = 1024 * 50;
byte[] buffer;
buffer = new byte[BUFFER_SIZE];
File paths = new File(pathName);
BufferedInputStream input =
new BufferedInputStream(new FileInputStream(paths));
DataOutputStream ou = new DataOutputStream(socket.getOutputStream());
try (BufferedOutputStream out = new BufferedOutputStream(ou)) {
ou.writeUTF(paths.getName());
int len, i=0;
while ((len = input.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
out.flush();
out.close();
input.close();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error sending File/n FAILED", "Sending Failed",
JOptionPane.ERROR_MESSAGE);
}
}
}
}
クライアント側
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.Socket;
import javax.swing.JOptionPane;
public class ClientReceive{
private DataInputStream ins;
private BufferedInputStream bis;
private BufferedOutputStream out;
public ClientReceive(){
}
public static void main(String [] args){
new ClientReceive().receiveFile();
}
public void receiveFile() {
try {
int BUFFER_SIZE = 1024 * 50;
byte[] buffer;
buffer = new byte[BUFFER_SIZE];
Socket socket = new Socket("localhost", 65141);
ins = new DataInputStream(socket.getInputStream());
String path=ins.readUTF();
bis = new BufferedInputStream(ins);
out = new BufferedOutputStream(new FileOutputStream("HotSpotFileShare_"+path));
int len;
while ((len = bis.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
out.flush();
JOptionPane.showMessageDialog(null, "File "+path+" Received Successfully",
"File Received", JOptionPane.INFORMATION_MESSAGE);
//System.out.println("\nDone!");
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, "Operation Failed", "Error", JOptionPane.ERROR_MESSAGE);
}
finally {
if (ins != null && out != null){
try {
out.close();
ins.close();
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, "Unable to Close Connection", "Error", JOptionPane.ERROR_MESSAGE);
}
}
}
}
}
どのようなエラーが表示されますか?どのようにサーバー上でそれを実行していますか?あなたのコンピュータにはどんなJREがありますか?サーバーにはどのようなJREがありますか? –
クライアントは「localhost」に接続します。あなたのサーバが "localhost"で動作していない**ときに何が起こると思いますか? – GhostCat
私はすでにサーバマシンのIPv4アドレスを使って実装しています。 –