TCP并发上传图片

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

客户端:

1、客户端首先建立socket服务

2、FileInputStream关联图片文件

3.通过socket获取文件输出流,上传到服务端并通过客户端的shutdownOutput()方法通知服务端数据上传完成

4、通过socket获取文件输入流,获取服务端发送过来的消息

服务端:

1、建立ServerSocket服务

2、通过Socket cs = ss.accept();循环接收客服端请求

3、建立线程,把服务端拿到的客服端传进方法

4、FileOutputStream关联输出文件

5、通过socket拿到InputStream,循环读写客服端上传的文件

6、通过socket拿到OutputStream,通知告诉客户端文件上传成功

7、关闭流

具体代码如下:

客户端:

public class TCP_UploadClient {

	/**
	 *TCP上传图片文件,多个客户端可同时想一个服务端上传文件
	 *客户端
	 */
	public static void main(String[] args) throws Exception{
		Socket cs = new Socket("192.168.2.5", 10001);
		FileInputStream filein = new FileInputStream("F:\\生活\\图片\\860OKMZO\\IMG_0683.JPG");
		OutputStream sout = cs.getOutputStream();
		byte[] buf = new byte[1024];
		int len=0;
		while((len=filein.read(buf))!=-1){
			sout.write(buf, 0, len);
			sout.flush();
		}
		cs.shutdownOutput();//通知服务端数据传输完成,结束标记
		byte[] sinbuf = new byte[1024];
		InputStream sin = cs.getInputStream();
		int count = sin.read(sinbuf);
		System.out.println(new String(sinbuf, 0, count));
		filein.close();
		cs.close();
	}

}
服务端:
public class TCP_UploadService {
	
	public static void main(String[] args) throws Exception{
		ServerSocket ss = new ServerSocket(10001);
		while(true){
		Socket cs = ss.accept();
		new Thread(new ThreadService(cs)).start();
		}
		//ss.close();
	}
}
class ThreadService implements Runnable{
	private Socket cs;
	ThreadService(Socket cs){
		this.cs = cs;
	}
	public void run() {
		String ip = cs.getInetAddress().getHostAddress();
		int Porte = cs.getPort();
		System.out.println("ip为:"+ip+"端口为:"+Porte+"已连接");
		int count=1;
		try {
			File file = new File("D://"+ip+"("+(count++)+")"+".jpg");
			while(file.exists()){
				file = new File("D://"+ip+"("+(count++)+")"+".jpg");
			}
			FileOutputStream fileout = new FileOutputStream(file);
			OutputStream sout = cs.getOutputStream();
			InputStream sin = cs.getInputStream();
			byte[] buf = new byte[1024];
			int len=0;
			while((len=sin.read(buf))!=-1){
				fileout.write(buf, 0, len);
				fileout.flush();
			}
			sout.write("上传成功".getBytes());
			sout.flush();
			fileout.close();
			//cs.close();
		} catch (Exception e) {
			throw new RuntimeException("服务端出现异常");
		}
		
		
	}
	
}

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值