Este exemplo compartilha o código específico para o cliente de implementação Java enviar arquivos para o servidor para sua referência. O conteúdo específico é o seguinte
Código -fonte do servidor:
importar java.io.bufferedReader; importar java.io.file; importar java.io.filenotfoundException; importar java.io.fileOutputStream; importar java.io.ioException; importar java.io.inputStreamReader; importar java.net.serversocket; importar java.net.socket; /** * File name: ServerReceive.java * Implementation function: As a server, receive files sent by the client* * Specific implementation process: * 1. Establish SocketServer and wait for the client to connect* 2. When there is a client connection, according to the agreement between the two parties, you must read a line of data* which saves the file name and file size information to be sent by the client* 3. Create a file locally based on the file name and establish a streaming Comunicação* 4. Receba os pacotes de dados em um loop e escreva os pacotes de dados no arquivo* 5. A transmissão e a saída de arquivo podem ser colocadas por si só de acordo com seu próprio programa] * * * Autor: Xiaoqiu * Tempo de criação: 2014-08-19 * * * */ public class ServerReceive {public static void main (string [] args) {/ ** alça de comunicação para estabelecer uma conexão com o servidor */ serversocket ss = null; Soquete s = nulo; / ** Definir objetos de arquivo e Objetos de fluxo de saída do arquivo criados localmente após a recepção*/ arquivo de arquivo = null; FileOutputStream fos = null; / ** Defina fluxos de entrada e use o Socket InputStream para inserir o pacote*/ inputStream é = null; / ** Defina matrizes de bytes para servir como pacotes de armazenamento para pacotes*/ byte [] buffer = novo byte [4096*5]; / ** Stand String usada para receber solicitações de envio de arquivo*/ string Comm = null; / ** Defina a comunicação SOCEKT e aguarde o servidor conectar*/ tente {ss = new ServerSocket (4004); s = ss.accept (); } catch (ioexception e) {e.printStackTrace (); } / ** Leia as informações da convenção enviadas por uma linha de clientes* / try {inputStreamReader isr = new InputStreamReader (s.getInputStream ()); BufferErader BR = new BufferredReader (ISR); Comm = Br.readLine (); } catch (ioexception e) {System.out.println ("O servidor se desconecta do cliente"); }/** Inicie o comando de solicitação enviado pelo cliente*/int index = comm.indexof ("/#"); / ** Discuta se o protocolo é o protocolo para enviar arquivos*/ string xieyi = comm.substring (0, índice); if (! xieyi.equals ("111")) {System.out.println ("O código do protocolo recebido pelo servidor está incorreto"); retornar; } / ** Analise o nome e o tamanho do arquivo* / comm = comm.substring (índice + 2); índice = comm.indexOF ("/#"); String filename = comm.substring (0, index) .Trim (); String filesize = comm.substring (índice + 2) .Trim (); / ** Crie um arquivo vazio para receber o arquivo*/ arquivo = novo arquivo (nome do arquivo); if (! file.exists ()) {try {file.createNewfile (); } catch (ioexception e) {System.out.println ("A criação do arquivo lateral do servidor falhou"); }} else { / ** Você também pode perguntar se deve substituir* / system.out.println ("o mesmo arquivo já existe neste caminho, substitua"); } / ** [O acima é a parte preparada do servidor escrito no código do cliente]* / / ***O código da chave do servidor para receber o arquivo* / try { / ** Enrole o arquivo no objeto de fluxo de saída do arquivo* / fos = new FileOuttStream (arquivo); long file_size = long.parselong (fileSize); é = s.getInputStream (); / ** O tamanho é o comprimento de cada pacote recebido*/ int size = 0; / ** A contagem é usada para gravar o comprimento do arquivo recebido*/ long count = 0; / ** Receba pacotes usando o loop*/ while (count <file_size) {/ ** Leia um pacote do fluxo de entrada*/ size = is.read (buffer); / ** Escreva o pacote que você acabou de ler no arquivo local*/ fos.write (buffer, 0, tamanho); fos.flush (); / ** O comprimento do arquivo recebido +tamanho*/ count += size; System.out.println ("O servidor recebeu o pacote, o tamanho é" + tamanho); }} catch (filenotfoundException e) {System.out.println ("O servidor falhou ao gravar o arquivo"); } catch (ioexception e) {System.out.println ("Server: Client Desconect"); } finalmente { / *** Feche o arquivo aberto* Se necessário, você também pode fechar a conexão do soquete aqui** / tente {if (fos! = null) fos.close (); } catch (ioexception e) {e.printStackTrace (); } // catch (ioexception e)} // finalmente} // public static void main (string [] args)} // public class ServerReceiveCódigo -fonte do cliente:
importar java.io.file; importar java.io.fileInputStream; importar java.io.filenotfoundException; importar java.io.ioException; importar java.io.OutputStream; importar java.io.printstream; importar java.net.socket; /** * * * Nome do arquivo: clientsnd.java * Função de implementação: Envie um arquivo para o servidor como um cliente * * Processo de implementação específico: * 1. Estabeleça uma conexão com o servidor, IP: 127.0.0.1, porta: 4004 * 2. Envie o nome do arquivo e o arquivo para o servidor para o arquivo para o arquivo de field *. é usado apenas para demonstrar a transferência de arquivo entre o cliente e o servidor. * Não existe um comando de protocolo de arquivo antes de cada pacote de dados * A transmissão específica de protocolo e o estágio de uso de arquivo pode ser colocado de acordo com seu próprio programa] * * * Autor: Novice * Tempo de criação: 2014-08-19 * * */ public class Customersend {public static void main (string] strocket) {/ ** ** Comunicação; /** Defina o objeto de arquivo, ou seja, o arquivo a ser enviado*Se você usar um caminho absoluto, não se esqueça de usar a diferença entre '/' e '/' ** para diferenças específicas, por favor, consulta do leitor sozinho**/arquivo sendfile = new File ("api.chm"); / ** Defina o fluxo de entrada do arquivo para abrir e ler o arquivo a ser enviado*/ FileInputStream fis = null; / ** Defina a matriz de bytes a ser usada como o pacote de armazenamento do pacote de dados*/ byte [] buffer = novo byte [4096*5]; / ** Defina o fluxo de saída e use o Sockettream do soquete para emitir o pacote*/ outputStream OS = null; / ** Verifique se o arquivo a ser enviado existe*/ if (! Sendfile.exists ()) {System.out.println ("Client: o arquivo a ser enviado não existe"); retornar; } / ** Crie uma conexão com o servidor* / tente {s = new Socket ("127.0.0.1", 4004); } catch (ioexception e) {System.out.println ("não conectado ao servidor"); } / ** Inicialize o objeto FIS com um objeto de arquivo*para que o tamanho do arquivo possa ser extraído** / try {fis = new FileInputStream (sendfile); } catch (filenotfoundException e1) {e1.printStackTrace (); } /** Primeiro, envie informações sobre o arquivo para o servidor para facilitar o servidor para receber os preparativos relacionados*para preparativos específicos, verifique o código do servidor. * * O conteúdo enviado inclui: envio de código do protocolo de arquivo (aqui está 111)/#Nome do arquivo (com nome do sufixo)/#tamanho do arquivo * */tente {printStream ps = new PrintStream (s.getOutputStream ()); ps.println ("111/#" + sendfile.getName () + "/#" + fis.Available ()); ps.flush (); } catch (ioexception e) {System.out.println ("Interrupção de conexão do servidor"); } / *** Durma aqui por 2 segundos, aguardando o servidor preparar o trabalho relevante* também para garantir que o atraso da rede* os leitores possam optar por adicionar esse código** / tente {thread.sleep (2000); } catch (interruptedException e1) {e1.printStackTrace (); } / ** Após o término do trabalho de preparação anterior*A seguir, é apresentado o código -chave para transferência de arquivo** / tente { / ** Obtenha o outputStream do soquete para gravar um pacote para ele* / OS = s.getOutputStream (); / ** O tamanho é usado para gravar o tamanho de cada arquivo leia*/ int size = 0; / ** Leia o arquivo usando loop enquanto a leitura do arquivo é concluída*/ while (size = fis.read (buffer))! = -1) {System.out.println ("O cliente envia o pacote, o tamanho é" + tamanho); / ** Escreva o pacote que você acabou de ler no fluxo de saída*/ os.Write (buffer, 0, tamanho); / ** Refresh*/ os.flush (); }} catch (filenotfoundException e) {System.out.println ("Erro do arquivo de leitura do cliente"); } catch (ioexception e) {System.out.println ("Erro do arquivo de saída do cliente"); } finalmente { / *** Feche o arquivo aberto* Se necessário, você também pode fechar a conexão do soquete aqui** / tente {if (fis! = null) fis.close (); } catch (ioexception e) {System.out.println ("Erro de fechamento do arquivo do cliente"); } // catch (ioexception e)} // finalmente} // public static void main (string [] args)} // public Class CusterleSndndO exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.