无聊写的 一个Soeckt 客户端例子

本文介绍了一个使用Java实现的网络通信示例,通过Socket进行客户端与服务端的数据交互,并详细展示了如何构造请求消息、进行数字签名验证及接收响应的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

	/**
	 * 发送请求
	 * @param ip
	 * @param port
	 * @param msg
	 * @throws Exception
	 */
	private String  sendMsg(String ip, int port, String vreqxml) throws Exception{    
		String result="";
		Socket socket=null;
		DataOutputStream dos=null;
		 DataInputStream dis=null;
		try{
			InetSocketAddress it = new InetSocketAddress(ip,port);
	        //InetSocketAddress it = new InetSocketAddress("172.16.xxxx.xxx",6688);
	        socket=new Socket();
	        logger.info("---sendMsg.timeout="+timeout);
	        socket.connect(it,timeout * 1000);
	        socket.setSoTimeout(timeout * 1000);
	             
	        DigitSignature ds=new DigitSignature("C:\\icbc\\");
	        byte[] data_sign= ds.genValiInfo(vreqxml.getBytes("utf-8") );
	        dos=new DataOutputStream(socket.getOutputStream());
	        
	 
	        byte[] data=new byte[vreqxml.getBytes("utf-8").length+data_sign.length];
	        System.arraycopy(vreqxml.getBytes("utf-8"),0,data,0,vreqxml.getBytes("utf-8").length);
	        System.arraycopy(data_sign,0,data,vreqxml.getBytes("utf-8").length,data_sign.length);
	        logger.info("data="+ HexTool.bytesToHexString(data)  );
	        logger.info("data_sign="+ HexTool.bytesToHexString(data_sign)  );

	        int length=data.length;
	        logger.info("length="+data.length);
	        dos.writeInt(length);
	        //dos.write(int2byte(length),0,4);
	        dos.write(data, 0, data.length);
	        dos.flush();
	       
	        while (true) {    
	        	dis=new DataInputStream(socket.getInputStream());
	        	int rsplength=dis.readInt();
	        	
	        	logger.info("rsplength="+rsplength);
	            byte rspbyte[]=new byte[rsplength];
	            byte content[]=new byte[rsplength-128];
	            dis.read(rspbyte);
	            logger.info("content-->"+content.length);
	            System.arraycopy(rspbyte,0,content,0,rsplength-128);
	            result=new String(content,"utf-8");
	            logger.info("rsp="+result);
	            break;
	        }
	        dis.close();
	        dos.close();
	        
		}catch(Exception e){
			e.printStackTrace();
			dis.close();
			dos.close();
			socket.close();
			 
			throw new Exception ("请求出现异常:"+e.toString());
			
		}finally{
			if(dis!=null)dis.close();
			if(dos!=null)dos.close();
			if(socket!=null)socket.close();
			
		}
		return result;

    }



简单例子
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值