[Java] TCP、ソケット、サーバーソケットを使用してファイルを転送する例

シミュレーションプロセスは次のとおりです。AがBにファイルを送信します。
Aは送信者、Bは受信者です。

tcpソケットを使用します。

中古:

ServerSocket ss = new ServerSocket(int 端口号);//接收端
Socket s = ss.accept();//接收端
Socket s=new Socket(String IP地址, int 端口);//发送端
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(String 文件路径+文件名));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(String 文件路径+文件名));

文件路径格式可以是:
"D:\\....\\....\\文件名"

比特数组:
byte[] buf=new byte[1024];

循环读取
int b;
while((b=bis.read(buf))!=-1){
    
    
    fos.write(buf,0,b);
    fos.flush();
}

送信者A:

BufferedInputStreamは、新しいFileInputStream()メソッドを介してローカルでファイルを読み取ります。BufferedOutputStreamのFileOutputStreamインスタンスは、s.getOutputStream()メソッドを介して取得され、ネットワーク内のホストに送信されます。

レシーバーB:

送信側とは逆、または対応します。
BufferedInputStreamのFileInputStreamは、s.getInputStream()を介して取得され、ネットワークから取得されます。BufferedOutputStreamは、新しいFileOutputStream()メソッドを介してファイルをローカルパスに書き込みます。

コード:
送信者:

try {
    
    
            Socket s=new Socket("127.0.0.1",端口);
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\file\\tee"));
            BufferedOutputStream fos = new BufferedOutputStream(s.getOutputStream());

            byte[] buf=new byte[1024];
            int b;
            while((b=bis.read(buf))!=-1){
    
    
                fos.write(buf,0,b);
                fos.flush();
            }

            fos.close();
			bis.close();
			
        } catch (IOException exception) {
    
    
            exception.printStackTrace();
        }

受信終了:

 try {
    
    

            ServerSocket ss = new ServerSocket(端口);
            Socket s = ss.accept();

            BufferedInputStream bis = new BufferedInputStream(s.getInputStream());
            BufferedOutputStream fos = new BufferedOutputStream(new FileOutputStream("D:\\otherfile\\tee"));

            byte[] buf=new byte[1024];
            int b;
            while((b=bis.read(buf))!=-1){
    
    
                fos.write(buf,0,b);
                fos.flush();
            }
            
            fos.close();
            bis.close();

        } catch (IOException exception) {
    
    
            exception.printStackTrace();
        }

おすすめ

転載: blog.csdn.net/qq_43750882/article/details/111287836