接http://topic.csdn.net/u/20081114/11/091305bd-24cf-4c5c-9083-3993e4d98eae.html?t=fnhncum1问题!
var a,b:array of byte;
SETLENGHT(a,148)
a[0]:=$01
.....
SETLENGHT(b,54)
b[0]:=$FE
......ClientSocket1.socket.SendBuf(a[0],148) ;
sleep(5000);ClientSocket1.socket.SendBuf(b[0],54) ;
sleep(5000);前面没有看清楚,表述的有些问题,现在看出问题来了,发送的每个包都少了14个,发送的时候每次都掉包,而且很有规律,都是少了14个!
第一个包少了00 00-00 00 00 00 00 00 00 00 00 00 00 00第二个包少了90 6D AD 00 27 1F CA 6B F1 43 40 00 01 00每次发送的时候一个是148个,另外一个是54,而实际发送了一个是134,一个是40,奇怪了!
var a,b:array of byte;
SETLENGHT(a,148)
a[0]:=$01
.....
SETLENGHT(b,54)
b[0]:=$FE
......ClientSocket1.socket.SendBuf(a[0],148) ;
sleep(5000);ClientSocket1.socket.SendBuf(b[0],54) ;
sleep(5000);前面没有看清楚,表述的有些问题,现在看出问题来了,发送的每个包都少了14个,发送的时候每次都掉包,而且很有规律,都是少了14个!
第一个包少了00 00-00 00 00 00 00 00 00 00 00 00 00 00第二个包少了90 6D AD 00 27 1F CA 6B F1 43 40 00 01 00每次发送的时候一个是148个,另外一个是54,而实际发送了一个是134,一个是40,奇怪了!
相信没问题
procedure TPolicy.Policy_CSConnect(Sender: TObject;
Socket: TCustomWinSocket);
var
S: string;
_X: TMsg;
begin
S := char($01);
S := S + Char($03);
S := S + Char($11);
S := S + USDS_Condition;
S := S + char($02);
Move(S[1], _X, Length(S));
Socket.SendBuf(_X, Length(S));
end;
以上代码是我在dll的socket发封包前做的动作。你看看
使用我给你的函数去发,另外,你前面贴子当中我看你使用的时候用得不对。我告诉你的是:
sizeof(b[0])*Length(b)
sleep(2000); if Not SendBuffer(PChar(@b[0]),sizeof(b[0])*Length(b),ClientSocket1.socket) then Exit;
sleep(2000);
第二个用*length(b),第一个没有怎么解释呀? 另外我发送固定长度也有问题呀! ClientSocket1.socket.SendBuf(a[0],148) ;
sleep(5000); ClientSocket1.socket.SendBuf(b[0],54) ;
sleep(5000); 和使用你的方法一样也是少14个