您的位置:首页 > 理论基础 > 计算机网络

使用TCP协议写一个可以上传文件的服务器和客户端

2015-06-14 07:57 751 查看
public class Test9

{

public static void main(String[] args)

{}

}

//客户端

class Client

{

public static void main(String[] args) throws Exception

{

//建立Socket服务

Socket fileLoaderSocket = new Socket("168.168.168.94", 10005);

//从客户端本地读取文件,并写入socket的输出流中

OutputStream out = fileLoaderSocket.getOutputStream();

//实例化对象fileReader

InputStream fileRead = new FileInputStream("G:\\2.mp3");

//建立数组

byte[] buf = new byte[1024];

int len = 0;

//判断是否读到文件末尾

while((len=fileRead.read(buf)) != -1)

{

out.write(buf, 0, len);

}

//告诉服务端,文件已传输完毕

fileLoaderSocket.shutdownOutput();

//获取从服务端反馈的信息

BufferedReader in = new BufferedReader(new InputStreamReader(fileLoaderSocket.getInputStream()));

String serverBack = in.readLine();

System.out.println(serverBack);

//资源关闭

fileLoaderSocket.close();

fileRead.close();

}

}

//服务端

class Server

{

public static void main(String[] args) throws Exception

{

//建立服务端Socket

ServerSocket ss = new ServerSocket(10005);

//接收客户端Socket

Socket fileLoaderSocket = ss.accept();

//打印连接信息

String ip = fileLoaderSocket.getInetAddress().getHostAddress();

System.out.println(ip + "...conncected");

//接收文件,并保存

InputStream in = fileLoaderSocket.getInputStream();

//实例化对象fileSave

OutputStream fileSave = new FileOutputStream("E:\\3.mp3");

//建立数组buf

byte[] buf = new byte[1024];

int len = 0;

//判断是否读到文件末尾

while((len=in.read(buf)) != -1)

{

fileSave.write(buf, 0, len);

//刷新

fileSave.flush();

}

//返回文件复制情况信息

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(fileLoaderSocket.getOutputStream()));

out.write("文件上传成功");

//刷新

out.flush();

//资源关闭

ss.close();

fileLoaderSocket.close();

fileSave.close();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: