importjava.io.InputStream;importjava.io.OutputStream;importjava.net.Socket;importjava.nio.ByteBuffer;****MDCVSS连接客户端*VendorSupliedSystem接入用户服务器*/publicclassSjsVss{/***登录消息**@return*/privatestaticbyte[]getLogonMsg{byte[]msgTypeArr=toHH;byte[]msgLengthArr=toHH;byte[]senderIDArr=getLogonBytes;byte[]targetIDArr=getLogonBytes;byte[]xintiao=toHH;///心跳byte[]mimaArr=getLogonBytes;///只填写api模式,byte[]空着vss模式xieyiArr=getLogonBytes;byte[]msgHeadBody=byteMerger;msgHeadBody=byteMerger;msgHeadBody=byteMerger;msgHeadBody=byteMerger;msgHeadBody=byteMerger;msgHeadBody=byteMerger;byte[]check=toHH);byte[]r=byteMerger;returnr;}privatestaticbyte[]hexStringToByteArr{if){returnnull;}s=s.replace;byte[]baKeyword=newbyte[s.length/2];for{try{baKeyword[i]=,1);}catch{e.printStackTrace;}}returnbaKeyword;}/***发送数据转换时,按高字节序列转换*int转换byte[]高字节在前**@paramn*@return*/publicstaticbyte[]toHH{byte[]b=newbyte;b=;b=;b=;b[0]=;returnb;}***byte数组合**@parambt1*@parambt2*@return*/publicstaticbyte[]byteMerger{byte[]bt3=newbyte[btlength btlength];System.arraycopy;System.arraycopy;returnbt3;}privatestaticbyte[]getLogonBytes{byte[]vssCs=s.getBytes;byte[]senderIDArr=newbyte[len];for{senderIDArr[i]=32;///默认情况下,空字符串必须填写32}System.arraycopy;returnsenderIDArr;}***byte数组转hex**@parambytes*@return*/publicstaticStringbyteToHex{StringstrHex="";StringBuildersb=newStringBuilder;for{strHex=Integer.toHexString;sb.append==?"0" strHex:strHex);//每个字节由两个字符表示,位数不够,高位补0}returnsb.toString.trim;}/***心跳消息**@return*/privatestaticbyte[]getHeartbeatMsg{byte[]msgTypeArr=toHH;byte[]msgLengthArr=toHH;byte[]headAndLenArr=byteMerger;byte[]check=toHH);byte[]r=byteMerger;returnr;}/***生成消息尾部验证**@parambytes*@return*/publicstaticintGenerateCheckSum{intsum=0;for{sum =b;}returnsum%6;}/***阅读数据线程处理*/staticclassReadThreadextendsThread{InputStreamreadStream;publicReadThread{this.readStream=readStream;}@Overridepublicvoidrun{try{while(//消息类型byte[]msgTypeBs=newbyte;readStream.read;intmsgTypeInt=ByteBuffer.wrap.getInt;///消息长度byte[]msgLenBs=newbyte;readStream.read;intmsgLengthInt=ByteBuffer.wrap.getInt;///消息体byte[]msgBodyBs=newbyte[msgLengthInt];readStream.read;///消息尾,校验byte[]msgCheckBs=newbyte;readStream.read;***根据不同类别分析消息体*表4-13-0快照市场数据类别列表*市场类别*MDStreamID*说明新闻类型是否有扩展*字段*010现货集中竞价交易快照市场30011Y*040期权集中竞价交易快照市场*020债券通用质押回购匹配交易快照市场30021Y*030债券分销快照市场*410债券现金交易快照市场*060收盘价交易后定价大宗交易快照市场30061Y*061交易后定价大宗交易*工程技术标准深圳证券交易所Binary市场数据接口规范*第16页共37页*370盘后定价交易快照市场30371Y*630港股实时市场30631Y*900指数快照市场30901Y*910成交量统计指数快照市场30911Y*920国证指数快照市场3091Y*System.out.println;System.out.println;System.out.println);if{//返回登录信息,啥也不干}elseif{***4快照市场*表4-13MDGW快照市场信息定义*域名字段描述*StandardHeader*消息头*MsgType=3xxx11*origtime数据生成时间int64*chanelnelno频道代码int16*MDStreamid市场类别char*securityID证券代码char*securityIDSource证券代码源char*tradingphasecode产品交易阶段代码char*prevclosePx昨日收价*numtrades交易量*totalvolumetrade交易量*totalvaluetradede交易量*extendendendede各业务扩展字段*/{////数据生成时间int64byte[]OrigTimeArr=newbyte;System.arraycopy;longOrigTime=ByteBuffer.wrap.getLong;//2021180850600stem.out.println;}{///ChanelNo频道代码int16/***集中竞价交易*快照市场*股票101x市场快照消息*基金102x*可转债103x*权证104x*期权105x*集中竞价交易*逐笔市场*股票201x逐笔委托信息*逐笔交易信息基金202x*/byte[]ChannelNoArr=newbyte;System.arraycopy;shortChannelNo=ByteBuffer.wrap.getShort;System.out.println;}{//MDStreamID市场类别charbyte[]MDStreamIDArr=newbyte;System.arraycopy;StringMDStreamID=newString;///010现货集中竞价交易快照市场System.out.println;}(/SecurityID证券代码charbyte[]SecurityIDArr=newbyte;System.arraycopy;StringSecurityID=newString;System.out.println;}{/***SecurityIDSource证券代码源char*证券代码源*102=深圳证券交易所*103=香港证券交易所*/byte[]SecurityIDSourceArr=newbyte;System.arraycopy;StringSecurityIDSource=newString;//System.out.println;}}else{}}}catch{e.printStackTrace;System.out.println);}}}publicstaticvoidmain{try{///{///{//varsocket=newSocket;//varoutStream=socket.getOutputStream;//outStream.write);//outStream.flush;//////发送登录信息Socketsocketsocketetet=newSocket;OutputStreamoutStream=socket.getOutputStream;outStream.write);outStream.flush;///线程读信息Readthreaddreadthreadreadthreadreadread=newReadThread);readThread.start;///定期心跳whilele{try{Thread.sleep;}catch{e.printStackTrace;}outStream.write);outStream.flush;}}catch{System.out.println);}}
文章为作者独立观点,不代表股票交易接口观点