Java Socket请求传入传入文件流写法

入参是请求报文+字节码文件+结束标识(END)

	public StringBuffer sendData(String msg, Map<String,byte[]> fileByte, String end){
		Socket socket=null;
		BufferedReader br=null;
		OutputStream out=null;
		StringBuffer resp = new StringBuffer();
		try{
			logger.info("host地址为:"+host+"port端口为:"+port);
			socket=new Socket(host,port);
			br=new BufferedReader(new InputStreamReader(socket.getInputStream(),ENCODE_GBK));//ENCODE_GBK编码格式
			out=socket.getOutputStream();
			//将入参转成字节码写入
			out.write(msg.getBytes(ENCODE_GBK));
			//将存放文件的map拆开分别将每一个文件写入
			for (String fileKey : fileByte.keySet()) {
				byte[] bytes = fileByte.get(fileKey);
				out.write(fileKey.getBytes(ENCODE_GBK));
				out.write(bytes);
			}
			//将结束标识写入
			out.write(end.getBytes(ENCODE_GBK));
			out.flush();
			//循环获取返回内容
			while(br.read() != -1){
				String str = br.readLine();
				resp.append(str);

			}
			return resp;
		}catch(Exception e){
			logger.error("接口发送数据异常",e.getMessage());
			e.printStackTrace();
			return resp;
		}finally {
			logger.debug("socketClient关闭链接");
			if(br!=null){
				try{
					br.close();
					out.close();
					socket.close();
				}catch(Exception e){
					throw new RuntimeException("socketClient关闭异常",e);
				}
			}
		}
	}

有更好的写法可以交流一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值