java服务器客户端文件,客户端服务器文件传输Java

这是我使用的方法,它使用套接字的输入和输出流来发送和接收文件,完成后,它将自动重新启动服务器并从客户端重新连接到服务器。

服务器代码:

package app.server;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.logging.Level;

import java.util.logging.Logger;

public class Functions

{

private static ServerSocket server;

private static Socket socket;

public static void startServer(int port)

{

try

{

server = new ServerSocket(port);

socket = server.accept();

}

catch (IOException ex)

{

Logger.getLogger(Functions.class.getName()).log(Level.SEVERE, null, ex);

}

}

private static void restartServer()

{

new Thread()

{

@Override

public void run()

{

try

{

socket = server.accept();

}

catch (IOException ex)

{

Logger.getLogger(Functions.class.getName()).log(Level.SEVERE, null, ex);

}

}

}.start();

}

public static void sendFile(String inputFilePath)

{

FileInputStream fis;

BufferedInputStream bis;

OutputStream os;

BufferedOutputStream bos;

try

{

File input = new File(inputFilePath);

fis = new FileInputStream(input);

bis = new BufferedInputStream(fis);

os = socket.getOutputStream();

bos = new BufferedOutputStream(os);

byte[] buffer = new byte[1024];

int data;

while(true)

{

data = bis.read(buffer);

if(data != -1)

{

bos.write(buffer, 0, 1024);

}

else

{

bis.close();

bos.close();

break;

}

}

}

catch (FileNotFoundException ex)

{

Logger.getLogger(Functions.class.getName()).log(Level.SEVERE, null, ex);

}

catch (IOException ex)

{

Logger.getLogger(Functions.class.getName()).log(Level.SEVERE, null, ex);

}

restartServer();

}

}

客户代码:

package app.client;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.Socket;

import java.util.logging.Level;

import java.util.logging.Logger;

public class Functions

{

private static Socket socket;

private static String hostName;

private static int portNumber;

public static void connectToServer(String host, int port)

{

new Thread()

{

@Override

public void run()

{

try

{

hostName = host;

portNumber = port;

socket = new Socket(host, port);

}

catch (IOException ex)

{

Logger.getLogger(Functions.class.getName()).log(Level.SEVERE, null, ex);

}

}

}.start();

}

private static void reconnectToServer()

{

try

{

socket = new Socket(hostName, portNumber);

}

catch (IOException ex)

{

Logger.getLogger(Functions.class.getName()).log(Level.SEVERE, null, ex);

}

}

public static void receiveFile(String outputFilePath)

{

InputStream is;

BufferedInputStream bis;

FileOutputStream fos;

BufferedOutputStream bos;

try

{

File output = new File(outputFilePath);

is = socket.getInputStream();

bis = new BufferedInputStream(is);

fos = new FileOutputStream(output);

bos = new BufferedOutputStream(fos);

byte[] buffer = new byte[1024];

int data;

while(true)

{

data = bis.read(buffer);

if(data != -1)

{

bos.write(buffer, 0, 1024);

}

else

{

bis.close();

bos.close();

break;

}

}

}

catch (IOException ex)

{

Logger.getLogger(Functions.class.getName()).log(Level.SEVERE, null, ex);

}

reconnectToServer();

}

}

此方法效果很好,我将其用于服务器和客户端文件传输程序,您所需要做的就是输入服务器主机的IP地址并选择端口号(我使用8888)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值