java模拟TCP上传文件到服务器

package com.zl.tcpfileload;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

/**
 * 
 * @author 丢了风筝的线
 * @see Tcp的客户端,上传文件
 * @see 2019年12月31日
 */
public class TcpClient {
	public static void main(String[] args) throws UnknownHostException, IOException {
		System.out.println("-----------Client----------");
		// 1)使用Socket创建客户端,建立连接,需要指定服务器的地址和端口
		Socket socket = new Socket("localhost", 8888);

		// 2) 操作:上传文件到服务器
		BufferedInputStream dataInput = new BufferedInputStream(new FileInputStream("me.png"));
		BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
		byte[] flush = new byte[1024];
		int len;
		while ((len = dataInput.read(flush)) != -1) {
			bos.write(flush, 0, len);
		}

		// 3) 释放资源
		dataInput.close();
		bos.close();
		socket.close();
	}
}

package com.zl.tcpfileload;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * TCP协议是点对点的服务
 * 
 * @author 丢了风筝的线
 * @see TCP协议操作的服务端
 * @see 2019年12月31日
 */
public class TcpServe {
	public static void main(String[] args) throws IOException {
		System.out.println("-----------Server---------");
		// 1)创建服务端口套接字,指定端口,使用ServerSocket
		ServerSocket serverSocket = new ServerSocket(8888);

		// 2)阻塞式的等待接收
		Socket clientSocket = serverSocket.accept();
		System.out.println("一个客户端建立了链接");

		// 3)操作:接收文件
		BufferedInputStream dataInput = new BufferedInputStream(clientSocket.getInputStream());
		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("tcpme.png"));
		byte[] flush = new byte[1024];
		int len;
		while ((len = dataInput.read(flush)) != -1) {
			bos.write(flush, 0, len);
		}
		// 4)释放资源
		dataInput.close();
		bos.close();
		serverSocket.close();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值