簡體   English   中英

通過套接字發送文件

[英]Sending Files Over Sockets

有沒有辦法在Java中通過套接字發送文件? 如果可以,怎么辦? 如果沒有,如何使用Java將文件從一台計算機發送到另一台計算機?

您打開一個套接字連接,然后將文件字節復制到套接字中,並從套接字的另一端讀取字節。 通過套接字連接發送任何流的方式相同。 也就是說,有多種方法可以將文件從一台計算機復制到另一台計算機(使用Java),包括復制到共享文件系統,通過ftp傳輸文件,將文件http發布到網絡服務器...

客戶端-服務器體系結構最適合實現您想要的。

在第一台計算機上啟動FileServer ,在第二台計算機上運行FileClient

通過套接字發送文件。

import java.io.BufferedInputStream;



import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

public class Main
 {

 public static void main(String[] args) throws IOException {

 ServerSocket servsock = new ServerSocket(123456);

File myFile = new File("s.pdf");

while (true)
 {

  Socket sock = servsock.accept();

   byte[] mybytearray = new byte[(int) myFile.length()];

   BufferedInputStream bis = new BufferedInputStream(new FileInputStream(myFile));

  bis.read(mybytearray, 0, mybytearray.length);

   OutputStream os = sock.getOutputStream();

   os.write(mybytearray, 0, mybytearray.length);

     os.flush();

    sock.close();

  }

 }

}

The client module


import java.io.BufferedOutputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.net.Socket;

public class Main {

public static void main(String[] argv) throws Exception
 {

 Socket sock = new Socket("127.0.0.1", 123456);

 byte[] mybytearray = new byte[1024];

 InputStream is = sock.getInputStream();

 FileOutputStream fos = new FileOutputStream("s.pdf");

  BufferedOutputStream bos = new BufferedOutputStream(fos);

   int bytesRead = is.read(mybytearray, 0, mybytearray.length);

 bos.write(mybytearray, 0, bytesRead);

   bos.close();

   sock.close();

  }

}

如果您主要關注的是將文件從一台計算機發送到另一台計算機。 而不是使用專有協議構建自己的文件服務器和客戶端,您可以在自己的Java應用程序中將ftp-server嵌入服務器端並將ftp客戶端嵌入客戶端。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM