123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797 |
- $PBExportHeader$uo_ljws_engine.sru
- forward
- global type uo_ljws_engine from olecustomcontrol
- end type
- end forward
- global type uo_ljws_engine from olecustomcontrol
- integer width = 128
- integer height = 112
- borderstyle borderstyle = stylelowered!
- boolean focusrectangle = false
- string binarykey = "uo_ljws_engine.udo"
- integer textsize = -12
- integer weight = 400
- fontcharset fontcharset = ansi!
- fontpitch fontpitch = variable!
- fontfamily fontfamily = swiss!
- string facename = "Arial"
- long textcolor = 33554432
- event ocx_error ( integer number, string description, long scode, string source, string helpfile, long helpcontext, boolean canceldisplay )
- event dataarrival ( long bytestotal )
- event ocx_connect ( )
- event connectionrequest ( long requestid )
- event ocx_close ( )
- event sendprogress ( long bytessent, long bytesremaining )
- event sendcomplete ( )
- event ue_getdatacomplete ( blob arg_bdata )
- event timer pbm_timer
- event ue_error ( string error_msg )
- event ue_thread_dataarrival ( )
- event ue_startsend ( )
- event ue_send ( )
- event ue_thread_send ( )
- event ue_thread_getdatacomplete ( )
- end type
- global uo_ljws_engine uo_ljws_engine
- type variables
- uo_thread_ws ins_obj_thread
- long listenport=7896//监听端口(默认8000)
- string remotehost='127.0.0.1'//远程主机名(默认127.0.0.1)
- long remoteport=7896 //远程端口(默认8000)
- string separator //分割符
- long ins_sendblob_size=21000000 // 数据包上限19.9M
- long ins_frame_size=1000 // 数据帧上限
- long Compress_level =3 //1~9 ->慢
- string ins_msg='' //错误信息存放
- window parentwindow_p
- PROTECTEDWRITE long ins_self_max_cmdid=1 //当前命令ID增量,新命令则+1后取
- PROTECTEDWRITE long ins_cur_cmdid=0 //当前执行的命令ID
- PROTECTEDWRITE long ins_cur_cmd_staus=0 //当前执行命令状态,0-执行中,1-完成,-1失败
- PROTECTEDWRITE blob ins_send_blob_ori //未经处理的要发送的原blob
- PROTECTEDWRITE blob ins_send_blob_compress//压缩后的blob
- PROTECTEDWRITE blob ins_acc_blob_ori //未经处理的dataarrival事件接收到的原blob
- PROTECTEDWRITE blob ins_acc_blob_compress //压缩后的blob
- blob ins_dataarrival_blob
- PROTECTEDWRITE long ins_send_total=0 //当前次发送数据的总帧数
- PROTECTEDWRITE long ins_send_pos=0 //当前次发送数据帧序号
- long ins_get_total=0 //当前次接收数据的总帧数
- long ins_get_pos=0 //当前次接收数据帧序号
- //long ins_client_cmdID=0 //客户端命令ID
- //long ins_server_cmdID=0 //服务端命令ID
- private blob ins_acc_temp//存放分包合并后完整的命令(string类型)
- //private blob ins_cmd_blob//(未解压数据)临时存放数据,每接收到分包都加进此blob
- private OLEObject ins_ZIPObject
- boolean ins_cancel_flag=false//取消操作标志
- end variables
- forward prototypes
- public subroutine reset ()
- public subroutine close ()
- public subroutine connecttoserver (string arg_remotehost, long arg_remoteport)
- public subroutine connecttoserver ()
- public function long getstate ()
- public function string getstatemsg ()
- public function integer send (blob arg_blob)
- private function integer send_fn (long arg_dataframeno)
- private function integer decompress ()
- private function blob getframeblob (long arg_dataposition)
- private function integer getdataframe (blob arg_blobdata)
- public subroutine listen ()
- private function long get_newcmdid ()
- private function blob p_getframeblob (s_dataframe arg_sdf)
- private function s_dataframe p_getframestru (blob arg_bdata)
- private function integer compress ()
- public subroutine setlistenport (long arg_listenport)
- public function integer send (string arg_str)
- public function integer send ()
- end prototypes
- event dataarrival(long bytestotal);//ins_obj_thread.of_runue('ue_thread_dataarrival')
- this.postevent('ue_thread_dataarrival')
- //blob lb_data
- //long rslt
- //
- //this.object.getdata(ref lb_data)//获取blob数据
- //
- //rslt=getdataframe(lb_data)
- //if rslt=0 then
- // ins_msg='解释接收数据错误>'+ins_msg
- // this.postevent('ue_error')
- //end if
- end event
- event connectionrequest(long requestid);if this.object.state <> 0 then
- this.object.close()
- end if
- this.object.accept(requestID)
- end event
- event ocx_close();this.object.close()
- end event
- event timer;//1秒检测一次连接状态
- choose case this.object.state()
- case 0
- // st_msg.text="关闭"
- // ib_listen = false
- case 1
- // st_msg.text="打开"
- // ib_listen = true
- case 2
- // st_msg.text="侦听"
- // ib_listen = true
- case 3
- // st_msg.text="连接挂起"
- case 4
- // st_msg.text="识别主机"
- case 5
- // st_msg.text="已识别主机"
- case 6
- // st_msg.text="正在连接"
- case 7
- // st_msg.text="已连接"
- case 8
- // st_msg.text="同级人员正在关闭连接"
- this.reset()
- //this.object.close()
- this.triggerevent('ocx_close')
- case 9
- // st_msg.text="错误"
- this.reset()
- //this.object.close()
- this.triggerevent('ocx_close')
- end choose
- end event
- event ue_thread_dataarrival();blob lb_data
- long rslt
- this.object.getdata(ref lb_data)//获取blob数据
- lb_data = blob ( String(lb_data,EncodingAnsi!) )
- rslt=getdataframe(lb_data)
- if rslt=0 then
- ins_msg='解释接收数据错误>'+ins_msg
- this.postevent('ue_error')
- end if
- end event
- event ue_thread_send();this.postevent('ue_send')
- end event
- event ue_thread_getdatacomplete();this.postevent('ue_thread_getdatacomplete')
- end event
- public subroutine reset ();ins_acc_temp=blob('')
- ins_send_blob_ori=blob('')
- ins_acc_blob_compress=blob('')
- ins_cur_cmdid=0
- end subroutine
- public subroutine close ();this.object.close()
- end subroutine
- public subroutine connecttoserver (string arg_remotehost, long arg_remoteport);// //使用参数的连接属性连接
- //IF THIS.Object.State <> 0 THEN
- // THIS.Object.Close()
- //END IF
- //remotehost = arg_remotehost
- //remoteport = arg_remoteport
- //THIS.Object.protocol = 0
- //THIS.Object.remotehost = arg_remotehost
- //THIS.Object.remoteport = arg_remoteport
- //
- //
- //THIS.Object.Connect()
- //
- remotehost = arg_remotehost
- remoteport = arg_remoteport
- THIS.ConnectToServer()
- end subroutine
- public subroutine connecttoserver ();//使用默认连接属性连接,默认连接属性可通过直接给remotehost和remoteport赋值实现
- IF THIS.Object.State <> 0 THEN
- THIS.Object.Close()
- END IF
- THIS.Object.protocol = 0
- THIS.Object.remotehost = remotehost
- THIS.Object.remoteport = remoteport
- THIS.Object.Connect()
- end subroutine
- public function long getstate ();return this.object.state()
- end function
- public function string getstatemsg ();choose case this.object.state()
- case 0
- return "关闭"
- case 1
- return "打开"
- case 2
- return "侦听"
- case 3
- return "连接挂起"
- case 4
- return "识别主机"
- case 5
- return "已识别主机"
- case 6
- return "正在连接"
- case 7
- return "已连接"
- case 8
- return "同级人员正在关闭连接"
- case 9
- return "错误"
- end choose
- end function
- public function integer send (blob arg_blob);//发送数据的启动函数
- //1.压缩
- //2.分包发送->this.send()
- Long rslt = 1
- Long ls_len
- string ls_sendmsg
- ins_msg = ''
- IF IsNull(arg_blob) OR Len(arg_blob) = 0 THEN
- ins_msg = '没有发送内容'
- rslt = 0
- GOTO ext
- END IF
- ////Unicode码
- //BlobBuf = ToUnicode(Left(sMsg, 1024))//FromUnicode()
- ////Ascii码
- ////BlobBuf = ToAnsi(Left(sMsg, 1024))//FromAnsi()
- ////BlobBuf = Blob(Left(sMsg, 1024))
- //转化成ToUnicode(ls_sendmsg)
- ls_sendmsg = String(arg_blob,EncodingAnsi!)
- arg_blob = Blob(ls_sendmsg,EncodingUTF16LE!)
- ins_send_blob_ori = arg_blob
- rslt = THIS.Send()
- ext:
- RETURN rslt
- //////////////////////////////////////////////////////////////////////////压缩处理
- //////压缩dll不能在c#中使用
- ////rslt = compress( ) //ins_send_blob压缩=>ins_send_blob_compress
- ////IF rslt = 0 THEN
- //// ins_msg = '发送失败>'+ins_msg
- //// GOTO ext
- ////END IF
- ////
- ////ls_len = Len(ins_send_blob_compress) //总长
- //
- /////////////////////////////////////////////////////////////////////计算总包数
- //ls_len = Len(ins_send_blob_ori) //总长
- //IF Mod(ls_len,ins_frame_size) = 0 THEN
- // ins_send_total = Int(ls_len/ins_frame_size)
- //ELSE
- // ins_send_total = Int(ls_len/ins_frame_size)+1
- //END IF
- //
- //////////////////////////////////////////////////////////////////////获取本次发包id
- //ins_cur_cmdid = get_newcmdid()
- //
- /////////////////////////////////////////////////////////////////////分包发送数据
- ////发送第一个包,待包发送成功并返回信息时继续发包,在getdataframe处实现
- //rslt = send_fn(1)
- //IF rslt = 0 THEN
- // ins_msg = '发送失败>'+ins_msg
- // GOTO ext
- //END IF
- //
- //ext:
- //RETURN rslt
- //
- //
- end function
- private function integer send_fn (long arg_dataframeno);Long ls_state
- ls_state = THIS.getstate()
- IF ls_state = 7 THEN
- THIS.Object.senddata(getframeblob(arg_dataframeno))
- RETURN 1
- ELSE
- ins_msg = "连接失败,状态:"+String(ls_state)
- RETURN 0
- END IF
- end function
- private function integer decompress ();Blob lb_null
- SetNull(lb_null)
- Long l_rslt
- Long l_destLen
- Long rslt = 1 //0 -失败 ,1-成功
- //l_destLen=ins_frame_size*10
- l_destLen = ins_frame_size*10000 //这个参数的意义?????????
- IF l_destLen < 1000000 THEN
- l_destLen = 1000000
- END IF
- IF NOT Len(ins_acc_blob_compress) > 0 OR IsNull(ins_acc_blob_compress) THEN
- ins_msg = '没有要解压缩的数据'
- rslt = 0
- GOTO ext
- END IF
- Long ll_status = 0
- String a_msg
- //if isvalid(ins_zipobject)=false then
- ll_status = ins_zipobject.ConnectToNewObject("longjoebz2.bz2")
- IF ll_status < 0 THEN
- CHOOSE CASE ll_status
- CASE -1
- a_msg = "Invalid Call: the argument is the Object property of a control"
- CASE -2
- a_msg = "Class name not found"
- CASE -3
- a_msg = "Object could not be created"
- CASE -4
- a_msg = "Could not connect to object"
- CASE -9
- a_msg = "Other error"
- END CHOOSE
- ins_msg = a_msg
- rslt = 0
- GOTO ext
- END IF
- //处理解压缩
- ins_acc_blob_ori = ins_acc_blob_compress
- l_rslt = ins_zipobject.z2DeCompressData(REF ins_acc_blob_ori, l_destLen)
- IF l_rslt <> 0 THEN //失败
- ins_msg = '解压缩调用失败'
- rslt = 0
- ins_acc_blob_ori = lb_null
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- private function blob getframeblob (long arg_dataposition);//获得包数为arg_dataposition的分包ins_send_blob_compress数据
- Long ls_total //总包数
- Long ls_len //长度
- Blob rslt_b
- rslt_b = Blob('')
- s_dataframe s_sdf
- IF arg_dataposition > ins_send_total THEN
- ins_msg = '不合理包序号,'+String(arg_dataposition)+'/'+String(ins_send_total)
- GOTO ext
- END IF
- s_sdf.cmdid = ins_cur_cmdid
- s_sdf.totalp = ins_send_total
- s_sdf.posp = arg_dataposition
- //if arg_dataposition=ls_total then
- IF arg_dataposition = ins_send_total THEN
- s_sdf.blobdata = BlobMid(ins_send_blob_ori,(arg_dataposition - 1) * ins_frame_size + 1)
- ELSE
- s_sdf.blobdata = BlobMid(ins_send_blob_ori,(arg_dataposition - 1) * ins_frame_size + 1,ins_frame_size)
- END IF
- rslt_b = THIS.p_getframeblob(s_sdf)
- //生成帧的序号
- ins_send_pos = arg_dataposition
- ext:
- RETURN rslt_b
- end function
- private function integer getdataframe (blob arg_blobdata);//获取分包数据,判断数据是否已经全收完
- //没有发完就继续发
- Long l_nextframeno
- Long rslt
- Boolean if_getdatafinish = FALSE
- String ls_strblib
- ins_cancel_flag = FALSE //2006.7.8
- //THIS.Object.senddata(ToUnicode("[getping]"))
- IF String(BlobMid(arg_blobdata,1,Len("[ping]"))) = "[ping]" THEN
- IF THIS.getstate() = 7 THEN
- THIS.Object.senddata(Blob("[getping]",EncodingUTF16LE!))
- //THIS.Object.senddata(ToAnsi ("[getping]"))
- END IF
- GOTO ext
- ELSEIF String(BlobMid(arg_blobdata,1,Len("[getping]"))) = "[getping]" THEN
- GOTO ext
- ELSEIF String(BlobMid(arg_blobdata,1,Len("[datapos]"))) = "[datapos]" THEN //发包中,继续发包。。。
- ls_strblib = String(arg_blobdata)
- l_nextframeno = Long(Mid(ls_strblib,Len("[datapos]")+1))
-
- IF l_nextframeno > 0 AND l_nextframeno <= ins_send_total THEN
- //发下一个包
- rslt = send_fn(l_nextframeno)
- IF rslt = 0 THEN
- if_getdatafinish = FALSE
- ins_msg = '下一个数据包发送失败>'+ins_msg
- GOTO ext
- END IF
- END IF
- GOTO ext
- ELSEIF String(BlobMid(arg_blobdata,1,Len("[cancel]"))) = "[cancel]" THEN //2006.7.8***
- if_getdatafinish = FALSE
- ins_cancel_flag = TRUE
- ins_msg = '取消命令>'+ins_msg
- GOTO ext //2006.7.8******
- END IF
- /////////////////////////////////////////////// //接收数据包处理
- s_dataframe s_sdf
- // s_sdf.totalp //获取总包数
- // s_sdf.posp//获取的是第几包
- s_sdf = p_getframestru( arg_blobdata) //解释接收到的数据
- IF s_sdf.Error <> 0 THEN
- ins_msg = '接收失败>'+ins_msg
- GOTO ext
- END IF
- IF s_sdf.totalp > 0 AND s_sdf.posp > 0 THEN
-
- IF s_sdf.totalp > s_sdf.posp THEN
- IF s_sdf.posp = 1 THEN //收到第一个数据包
- ins_acc_temp = s_sdf.blobdata
- ELSE //收到其他部分数据包
- ins_acc_temp = ins_acc_temp + s_sdf.blobdata
- END IF
- THIS.Object.senddata(Blob("[datapos]"+String(s_sdf.posp + 1),EncodingUTF16LE!)) //请求下一数据包
- if_getdatafinish = FALSE
-
- ELSEIF s_sdf.totalp <= s_sdf.posp THEN
- IF s_sdf.totalp = 1 THEN
- ins_acc_temp = s_sdf.blobdata
- ELSE
- ins_acc_temp = ins_acc_temp + s_sdf.blobdata
- END IF
- if_getdatafinish = TRUE //如果所有数据包传送完毕返回true
- END IF
- END IF
- //////////////////////////////////////////////////////////// //接收完数据,解压,读取
- IF if_getdatafinish THEN //如果所有数据包传送完毕返回true
- // ins_acc_blob_compress = ins_acc_temp
- // rslt = decompress() //ins_acc_blob_compress=>ins_acc_blob_ori
- // IF rslt = 0 THEN
- // ins_msg = '接收数据完毕,解压失败>'
- // END IF
-
- //messagebox(string(len(ins_acc_blob_compress)),string(len(ins_acc_blob_ori)))
- ins_acc_blob_ori = ins_acc_temp
- ins_acc_temp = Blob('') //reset ins_acc_temp
- EVENT ue_getdatacomplete(ins_acc_blob_ori)
- ELSE
- IF ins_cancel_flag THEN //取消操作
- ins_acc_temp = Blob('') //reset ins_acc_temp
- END IF
- END IF
- //////////////////////////////////////////////////////////////// //
- ext:
- RETURN rslt
- end function
- public subroutine listen ();IF THIS.Object.State() <> 0 THEN
- THIS.Object.Close()
- END IF
- THIS.Object.localport = listenport //用默认端口
- THIS.Object.Listen()
- end subroutine
- private function long get_newcmdid ();ins_self_max_cmdid=ins_self_max_cmdid+1
- return ins_self_max_cmdid
- end function
- private function blob p_getframeblob (s_dataframe arg_sdf);//从帧结构返回blob
- /*
- long cmdID //本次命令ID ,对象内自增量 ,0-错误数据格式
- long totalp //总包数
- long posp //当前包数
- blob blobdata //数据包,可能是压缩的
- */
- blob b_data
- b_data=Blob(string(arg_sdf.cmdID) + separator + &
- string(arg_sdf.totalp) + separator+ &
- string(arg_sdf.posp) + separator,EncodingUTF16LE!) + &
- arg_sdf.blobdata
- return b_data
- end function
- private function s_dataframe p_getframestru (blob arg_bdata);//从blob返回数据帧结构内容
- s_dataframe s_df
- /*
- s_dataframe
- long cmdID //本次命令ID ,对象内自增量 ,0-错误数据格式
- long totalp //总包数
- long posp //当前包数
- blob blobdata //数据包,可能是压缩的
- */
- Long ls_p1 = 0,ls_p2 = 0,ls_p3 = 0,ls_len,li = 0
- Long lens,ls_separator_no = 0
- string ls_str, ls_str1
- lens = Len(separator) * 2
- ls_len = Len(arg_bdata)
- IF ls_len < lens*3+3 THEN
- s_df.Error = 1
- GOTO ext
- END IF
- ls_str = string(arg_bdata, EncodingANSI!)
- FOR li = 1 TO ls_len step 2
- ls_str = String(BlobMid(arg_bdata,li,lens))
- IF ls_str = separator THEN
- ls_separator_no = ls_separator_no+1
- IF ls_separator_no = 1 THEN //cmdID 的位置
- ls_p1 = li
- ELSEIF ls_separator_no = 2 THEN //totalp 位置
- ls_p2 = li
- ELSEIF ls_separator_no = 3 THEN //posp 位置
- ls_p3 = li
- EXIT
- END IF
- END IF
- NEXT
- IF ls_p3 = 0 THEN
- s_df.Error = 1 //没数据
- GOTO ext
- END IF
- s_df.cmdID = Long(String(BlobMid(arg_bdata,1,ls_p1 - 1)))
- s_df.totalp = Long(String(BlobMid(arg_bdata,ls_p1+lens,ls_p2 - ls_p1 - lens)))
- s_df.posp = Long(String(BlobMid(arg_bdata,ls_p2+lens,ls_p3 - ls_p2 - lens)))
- s_df.blobdata = BlobMid(arg_bdata,ls_p3+lens)
- IF s_df.cmdID <= 0 OR s_df.totalp <= 0 OR s_df.posp <= 0 THEN
- s_df.Error = 2 //有数据但是不对
- GOTO ext
- ELSE
- s_df.Error = 0 //正确
- END IF
- ext:
- RETURN s_df
- end function
- private function integer compress ();Blob lb_null
- SetNull(lb_null)
- Long l_rslt
- Long rslt = 1 //0 -失败 ,1-成功
- IF NOT Len(ins_send_blob_ori) > 0 OR IsNull(ins_send_blob_ori) THEN
- ins_msg = '没有要压缩的数据'
- rslt = 0
- GOTO ext
- END IF
- //压缩代码
- Long ll_status = 0
- String a_msg
- //if isvalid(ins_zipobject)=false then
- ll_status = ins_zipobject.ConnectToNewObject("longjoebz2.bz2")
- IF ll_status < 0 THEN
- CHOOSE CASE ll_status
- CASE -1
- a_msg = "Invalid Call: the argument is the Object property of a control"
- CASE -2
- a_msg = "Class name not found"
- CASE -3
- a_msg = "Object could not be created"
- CASE -4
- a_msg = "Could not connect to object"
- CASE -9
- a_msg = "Other error"
- END CHOOSE
- ins_msg = a_msg
- rslt = 0
- GOTO ext
- END IF
- //处理压缩
- ins_send_blob_compress = ins_send_blob_ori
- l_rslt = ins_zipobject.z2CompressData(REF ins_send_blob_compress , Compress_level ) //第二参数是压缩等级
- //messagebox('压缩'+string(len(ins_send_blob_compress)),len(ins_send_blob_ori))
- IF l_rslt <> 0 THEN //失败
- ins_msg = '压缩调用失败'
- rslt = 0
- ins_send_blob_compress = lb_null
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public subroutine setlistenport (long arg_listenport);listenport=arg_listenport
- //this.listen()
- end subroutine
- public function integer send (string arg_str);//发送数据的启动函数
- //1.压缩
- //2.分包发送->this.send()
- Long rslt = 1
- Long ls_len
- ins_msg = ''
- IF IsNull(arg_str) OR Len(arg_str) = 0 THEN
- ins_msg = '没有发送内容'
- rslt = 0
- GOTO ext
- END IF
- //Unicode码
- ins_send_blob_ori = Blob(arg_str,EncodingUTF16LE!)//FromUnicode()
- ////Ascii码
- ////BlobBuf = ToAnsi(Left(sMsg, 1024))//FromAnsi()
- ////BlobBuf = Blob(Left(sMsg, 1024))
- rslt = THIS.Send()
- ext:
- RETURN rslt
- /////////////////////////////////////////////////////////////////////计算总包数
- //ls_len = Len(ins_send_blob_ori) //总长
- //IF Mod(ls_len,ins_frame_size) = 0 THEN
- // ins_send_total = Int(ls_len/ins_frame_size)
- //ELSE
- // ins_send_total = Int(ls_len/ins_frame_size)+1
- //END IF
- //
- //////////////////////////////////////////////////////////////////////获取本次发包id
- //ins_cur_cmdid = get_newcmdid()
- //
- /////////////////////////////////////////////////////////////////////分包发送数据
- ////发送第一个包,待包发送成功并返回信息时继续发包,在getdataframe处实现
- //rslt = send_fn(1)
- //IF rslt = 0 THEN
- // ins_msg = '发送失败>'+ins_msg
- // GOTO ext
- //END IF
- //
- //ext:
- //RETURN rslt
- //
- //
- end function
- public function integer send ();//发送数据的启动函数
- //1.压缩
- //2.分包发送->this.send()
- Long rslt = 1
- Long ls_len
- ins_msg = ''
- //Unicode码
- //ins_send_blob_ori = ToUnicode(arg_str)//FromUnicode()
- ////Ascii码
- ////BlobBuf = ToAnsi(Left(sMsg, 1024))//FromAnsi()
- ////BlobBuf = Blob(Left(sMsg, 1024))
- ////////////////////////////////////////////////////////////////////////压缩处理
- ////压缩dll不能在c#中使用
- //rslt = compress( ) //ins_send_blob压缩=>ins_send_blob_compress
- //IF rslt = 0 THEN
- // ins_msg = '发送失败>'+ins_msg
- // GOTO ext
- //END IF
- //
- //ls_len = Len(ins_send_blob_compress) //总长
- ///////////////////////////////////////////////////////////////////计算总包数
- ls_len = Len(ins_send_blob_ori) //总长
- if ls_len = 0 then
- ins_msg = '没有发送内容'
- rslt = 0
- GOTO ext
- end if
- IF Mod(ls_len,ins_frame_size) = 0 THEN
- ins_send_total = Int(ls_len/ins_frame_size)
- ELSE
- ins_send_total = Int(ls_len/ins_frame_size)+1
- END IF
- ////////////////////////////////////////////////////////////////////获取本次发包id
- ins_cur_cmdid = get_newcmdid()
- ///////////////////////////////////////////////////////////////////分包发送数据
- //发送第一个包,待包发送成功并返回信息时继续发包,在getdataframe处实现
- rslt = send_fn(1)
- IF rslt = 0 THEN
- ins_msg = '发送失败>'+ins_msg
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- on uo_ljws_engine.create
- end on
- on uo_ljws_engine.destroy
- end on
- event destructor;destroy ins_ZIPObject
- this.object.close()
- end event
- event constructor;///cjh
- ///cjh@longserve.com
- ///2006-3
- ins_frame_size=long(profilestring('ljprj_wiz.ini','longjoews','frame_size','1000'))
- // 封装基本的通讯及压缩功能
- ins_ZIPObject=create OLEObject
- //listenport=sys_listenport
- //separator=char(17)+char(18)
- separator=char(17)
- parentwindow_p = getparent() //获得祖先
- end event
- Start of PowerBuilder Binary Data Section : Do NOT Edit
- 0Fuo_ljws_engine.bin
- 2500000c00e011cfd0e11ab1a1000000000000000000000000000000000003003e0009fffe000000060000000000000000000000010000000100000000000010000000000200000001fffffffe0000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd00000004fffffffefffffffefffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006f00520074006f004500200074006e00790072000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050016ffffffffffffffff00000003000000000000000000000000000000000000000000000000000000000417c8a001cbc90800000003000001000000000000500003004c004200430049004e0045004500530045004b000000590000000000000000000000000000000000000000000000000000000000000000000000000002001cffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000480000000000500003004f0042005800430054005300450052004d0041000000000000000000000000000000000000000000000000000000000000000000000000000000000002001affffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000020000002800000000004200500043004f00530058004f00540041005200450047000000000000000000000000000000000000000000000000000000000000000000000000000000000101001a000000020000000100000004248dd89611cfbb458000bc9a8db7e7c7000000000417c8a001cbc9080417c8a001cbc90800000000000000000000000000000001fffffffefffffffefffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
- 21ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006300320039003400380066003000300063002d00640032002d006400310031006600630039002d00640061002d00360030003000300038003700630037006500370062006400380043003b005c003a007200500067006f006100720020006d006900460065006c005c00730079005300610062006500730053005c004c00511234432100000008000002e5000002e5248dd8920006000000000000000000000000000000000000005c003a007200500067006f006100720020006d006900461234432100000008000002e5000002e5248dd89200060000000000000000000000000000000000000072006500200065003000310053005c006200790073006100200065006500430074006e006100720020006c002e0035002e0030005c0030006900770033006e003b0032003a00430050005c006f007200720067006d006100460020006c0069007300650053005c0062007900730061005c0065006f00500065007700420072006900750064006c0072006500310020002e0031003b0035003a00430057005c004e0049004f004400530057004d005c00630069006f0072006f007300740066004e002e005400450046005c006100720065006d006f0077006b00720076005c002e0032002e00300030003500320037003b003700000000013d002200ff00fe0015028800150288fffffffe00000000fffffffffffffffe006f00430074006e006e00650073007400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001020012ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000300000028000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- 1Fuo_ljws_engine.bin
- End of PowerBuilder Binary Data Section : No Source Expected After This Point
|