I can do as follow,and change the java to delphi and C++,but my manager do
not agree do that.
=============================================
package com.blob.activemq;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.Socket;
import java.net.URL;
import java.net.UnknownHostException;

/*
 * 客户端
 */
public class SoBlob {
        public static String keywww;
    public static void main(String[] args) {
        
        String oldid="ID:WWW-5DAA99645BA-3700-1494653738046-";
        String newid="ID_WWW-5DAA99645BA-4047-1494657860484-";
        URL url = null;//createMessageURL(message);
          try {
                
//http://192.168.2.227:8161/fileserver/ID:WWW-5DAA99645BA-4345-1494661885140-1:1:1:1:1
                //url=new 
URL("http://192.168.2.227:8161/fileserver/"+newid+"1:1:1:1:1";);
                url=new 
URL("http://localhost:8161/fileserver/"+newid+"1:1:1:1:1";);
          } catch (MalformedURLException e2) {
                        // TODO Auto-generated catch block
                        e2.printStackTrace();
                }
        File file = new File("c:\\www.jpg");
        FileInputStream fis = null;
        HttpURLConnection connection = null;
                try {
                        fis = new FileInputStream(file);
                } catch (FileNotFoundException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                }               
        //InputStream fis=new inputstream(file);
         try {
                        connection = (HttpURLConnection)url.openConnection();
                } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                }
                        try {
                                connection.setRequestMethod("PUT");
                        } catch (ProtocolException e1) {
                                // TODO Auto-generated catch block
                                e1.printStackTrace();
                        }

        connection.setDoOutput(true);


        // use chunked mode or otherwise URLConnection loads everything into
        // memory
        // (chunked mode not supported before JRE 1.5)
       
//connection.setChunkedStreamingMode(transferPolicy.getBufferSize());
        connection.setChunkedStreamingMode((int) file.length());
        try(OutputStream oss = connection.getOutputStream()) {
            byte[] buf =new byte[(int) file.length()];//new
byte[transferPolicy.getBufferSize()];
            for (int c = fis.read(buf); c != -1; c = fis.read(buf)) {
                oss.write(buf, 0, c);
                oss.flush();
            }
        } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        
        
        
        
        
        
        
        
        
        ///////////////////////////////////////////////////////////
        try {
            //1.创建客户端Socket,指定服务器地址和端口
            //Socket socket=new Socket("192.168.2.227", 61616);
            Socket socket=new Socket("localhost", 61616);
            //2.获取输出流,向服务器端发送信息
            OutputStream os=socket.getOutputStream();//字节输出流
            //PrintWriter pw=new PrintWriter(os);//将输出流包装为打印流
            //pw.write("用户名:whf;密码:789");
            //pw.flush();

                //os.write(buffer99, 0, buffer99.length);
                //os.flush();

            So.keywww=newid;
            int[]  BBB={398,101,139,59,85,211,21,21,21,21,11};
            ///*
            String
B0="0000018A014163746976654D510000000C01000001780000000D0009436163686553697A650500000400000C4D61784672616D6553697A65067FFFFFFFFFFFFFFF000C4361636865456E61626C656401010004486F737409000D3139322E3136382E322E323237000C50726F76696465724E616D650900084163746976654D51001253697A6550726566697844697361626C6564010000204D6178496E61637469766974794475726174696F6E496E6974616C44656C617906000000000000271000145469676874456E636F64696E67456E61626C656401010011537461636B5472616365456E61626C65640101000F50726F766964657256657273696F6E0000115463704E6F44656C6179456E61626C65640101000F506C6174666F726D44657461696C730900454A564D3A20312E372E305F30312C2032312E312D6230322C204F7261636C6520436F72706F726174696F6E2C204F533A2057696E646F77732058502C20352E312C2078383600154D6178496E61637469766974794475726174696F6E06000000000000753000";
                String
B1="0000006103027F1800000001000078002949443A5757572D35444141393936343542412D333730302D313439343635333733383034362D313A31002949443A5757572D35444141393936343542412D333730302D313439343635333733383034362D303A3132
                                                                                
                                                                                
                                                                                
                                                                                
                                                       
";
                String
B2="0000008705047F7D04000000000200017A002949443A5757572D35444141393936343542412D333730302D313439343635333733383034362D313A31FFFFFFFFFFFFFFFF000100026500374163746976654D512E41647669736F72792E54656D7051756575652C4163746976654D512E41647669736F72792E54656D70546F706963000003E8000000000078
                                                                                
                                                                                
                                                                                
                                                                                
                                                       
";
                String
B3="0000003704015E00000003000379002949443A5757572D35444141393936343542412D333730302D313439343635333733383034362D313A31000131
                                                                                
                                                                                
                                                                                
                                                                                
                                                       
";
                String
B4="0000005106025F1F0000000400047B002949443A5757572D35444141393936343542412D333730302D313439343635333733383034362D313A3100010001000564000E46696C652E5472616E73706F72740000000064
                                                                                
                                                                                
                                                                                
                                                                                
                                                       
";
                String
B5="000000CF1D0648043001001F0000000500040005000600066E00040001000600000000040000015C004E1FF80000002D00000002000946494C452E53495A450600000000000122F8000946494C452E4E414D450900077777772E6A70670006000000000054687474703A2F2F3139322E3136382E322E3232373A383136312F66696C657365727665722F49443A5757572D35444141393936343542412D333730302D313439343635333733383034362D313A313A313A313A3100186170706C69636174696F6E2F6F637465742D73747265616D62";
                String B6="000000110C010C000000060004FFFFFFFFFFFFFFFE06";
                String B7="000000110C010C000000070003FFFFFFFFFFFFFFFE06";
                String B8="000000110C010C000000080001FFFFFFFFFFFFFFFE06";
                String B9="000000110C010D000000090000FFFFFFFFFFFFFFFF06";
                String B10="000000070B01000000000A00";
           // */
                //So.keywww="ID:WWW-5DAA99645BA-2748-1494638863984-";
                 So.keywww=bytes2HexString(So.keywww.getBytes());               
                System.out.println("B0");
                printchar(hexStringToBytes(B0));
                byte[] buffer=hexStringToBytes(B0);
                os.write(buffer, 0, BBB[0]);
                os.flush();
                /*
还有参数的替换问题。
文件名可替换,但文件名长度不能变。是不是队列名一样长度不能变?
且可能只能是英文名,不可中文名?
文件大小的数值或可以不理,如果理,是不是数值的长度也不能变化?
这些小事想起来也会烦人的。
                */
                System.out.println("B1");
                
                printchar(hexStringToBytes(B1));
                byte[] wwwbb1=oldid.getBytes();
                String wwwb1=bytes2HexString(wwwbb1);
                B1=B1.replaceAll(wwwb1, So.keywww);
                
                byte[] buffer1=hexStringToBytes(B1);
                printchar((buffer1));
                os.write(buffer1, 0, BBB[1]);
                os.flush();
                
                System.out.println("B2");
                printchar(hexStringToBytes(B2));

                B2=B2.replaceAll(wwwb1, So.keywww);
                byte[] buffer2=hexStringToBytes(B2);
                printchar((buffer2));
                os.write(buffer2, 0, BBB[2]);
                os.flush();
                try {
                                Thread.sleep(1);
                        } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                
                System.out.println("B3");
                printchar(hexStringToBytes(B3));

                B3=B3.replaceAll(wwwb1, So.keywww);
                byte[] buffer3=hexStringToBytes(B3);
                printchar((buffer3));
                os.write(buffer3, 0, BBB[3]);
                os.flush();
                
                System.out.println("B4");
                printchar(hexStringToBytes(B4));

        B4=B4.replaceAll(wwwb1, So.keywww);
                byte[] buffer4=hexStringToBytes(B4);
                printchar((buffer4));
                os.write(buffer4, 0, BBB[4]);
                os.flush();
                
                
                System.out.println("B5");
                printchar(hexStringToBytes(B5));
                B5=B5.replaceAll(wwwb1, So.keywww);
                B5=B5.replaceAll(bytes2HexString("www.jpg".getBytes()),
bytes2HexString("qqq.jpg".getBytes()));
                printchar(hexStringToBytes(B5));
                byte[] buffer5=hexStringToBytes(B5);
                os.write(buffer5, 0, BBB[5]);
                os.flush();
                System.out.println("B6");
                printchar(hexStringToBytes(B6));
                byte[] buffer6=hexStringToBytes(B6);
                os.write(buffer6, 0, BBB[6]);
                os.flush();
                
                System.out.println("B7");
                printchar(hexStringToBytes(B7));
                byte[] buffer7=hexStringToBytes(B7);
                os.write(buffer7, 0, BBB[7]);
                os.flush();
                System.out.println("B8");
                printchar(hexStringToBytes(B8));
                byte[] buffer8=hexStringToBytes(B8);
                os.write(buffer8, 0, BBB[8]);
                os.flush();
                System.out.println("B9");
                printchar(hexStringToBytes(B9));
                byte[] buffer9=hexStringToBytes(B9);
                os.write(buffer9, 0, BBB[9]);
                os.flush();
                System.out.println("B10");
                printchar(hexStringToBytes(B10));
                byte[] buffer10=hexStringToBytes(B10);
                os.write(buffer10, 0, BBB[10]);
                os.flush();
                
                 
            socket.shutdownOutput();//关闭输出流
            
            //3.获取输入流,并读取服务器端的响应信息
            InputStream is=socket.getInputStream();
            BufferedReader br=new BufferedReader(new InputStreamReader(is));
            String info=null;
            while((info=br.readLine())!=null){
                System.out.println("我是客户端,服务器说:"+info);
            }
            //4.关闭资源
            br.close();
            is.close();
            //pw.close();
            os.close();
            socket.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static byte[] hexStringToBytes(String hexString) {
        if (hexString == null || hexString.equals("")) {
            return null;
        }
        hexString = hexString.toUpperCase();
        int length = hexString.length() / 2;
        char[] hexChars = hexString.toCharArray();
        byte[] d = new byte[length];
        for (int i = 0; i < length; i++) {
            int pos = i * 2;
            d[i] = (byte) (charToByte(hexChars[pos]) << 4 |
charToByte(hexChars[pos + 1]));
            
        }
        return d;
    }
    private static byte charToByte(char c) {
        return (byte) "0123456789ABCDEF".indexOf(c);
    }
    public static byte[] hexStringToByteArray(String s) {
        int len = s.length();
        byte[] data = new byte[len / 2];
        try {
            for (int i = 0; i < len; i += 2) {
                data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) <<
4)
                        + Character.digit(s.charAt(i+1), 16));
            }
        } catch (Exception e) {
            //Log.d("", "Argument(s) for hexStringToByteArray(String s)"+
"was not a hex string");
        }
        return data;
    }
    public static String bytes2HexString(byte[] b) {  
          String ret = "";  
          for (int i = 0; i < b.length; i++) {  
           String hex = Integer.toHexString(b[ i ] & 0xFF);  
           if (hex.length() == 1) {  
            hex = '0' + hex;  
           }  
           ret += hex.toUpperCase();  
          }  
          return ret;  
        }
    public static void printchar(byte[] www){
        String sss="";
        for (int ii=0;ii<=www.length-1;ii++){
        sss=sss+(char)www[ii];}
        System.out.println(sss);
        }
}



--
View this message in context: 
http://activemq.2283324.n4.nabble.com/BlobMessage-in-ActiveMQ-CPP-by-now-2017-tp4726457p4726458.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to