importjava.io.InputStream;importjava.io.OutputStream;importjava.net.Socket;importjava.nio.ByteBuffer;/***MDCVSS连接客户端*VendorSuppliedSystem接入用户服务器*/publicclassSjsVss{/***登录消息**@return*/privatestaticbyte[]getLogonMsg{byte[]msgTypeArr=toHH;byte[]msgLengthArr=toHH;byte[]senderIDArr=getLogonBytes;byte[]targetIDArr=getLogonBytes;byte[]xintiao=toHH;//心跳byte[]mimaArr=getLogonBytes;//api模式才填,vss模式空着byte[]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%256;}/***读数据线程处理*/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现货集中竞价交易快照行情300111Y*040期权集中竞价交易快照行情*020债券通用质押式回购匹配交易快照行情300211Y*030债券分销快照行情*410债券现券交易快照行情*060以收盘价交易的盘后定价大宗交易快照行情300611Y*061以成交量加权平均价交易的盘后定价大宗交*易快照行情*工程技术标准深圳证券交易所Binary行情数据接口规范*第16页共37页*370盘后定价交易快照行情303711Y*630港股实时行情306311Y*900指数快照行情309011Y*910成交量统计指标快照行情309111Y*920国证指数快照行情309011Y*/System.out.println;System.out.println;System.out.println);if{//返回登录消息,啥也不干}elseif{/***4快照行情*表4-13MDGW发布快照行情消息定义*域名字段描述*StandardHeader*消息头*MsgType=3xxx11*OrigTime数据生成时间int64*ChannelNo频道代码int16*MDStreamID行情类别char*SecurityID证券代码char*SecurityIDSource证券代码源char*TradingPhaseCode产品所处的交易阶段代码char*PrevClosePx昨收价*NumTrades成交笔数*TotalVolumeTrade成交总量*TotalValueTrade成交总金额*ExtendFields各业务扩展字段*/{//数据生成时间int64byte[]OrigTimeArr=newbyte;System.arraycopy;longOrigTime=ByteBuffer.wrap.getLong;//20211118085506000System.out.println;}{//ChannelNo频道代码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;//}//发登录消息Socketsocket=newSocket;OutputStreamoutStream=socket.getOutputStream;outStream.write);outStream.flush;//线程读消息ReadThreadreadThread=newReadThread);readThread.start;//定时发心跳while{try{Thread.sleep;}catch{e.printStackTrace;}outStream.write);outStream.flush;}}catch{System.out.println);}}
文章为作者独立观点,不代表股票交易接口观点