求問一些知識點的問題,如何去模擬一個tcp/ip的協議(像斗魚/熊貓各種直播網站的虛擬人氣模擬軟體),我想知道的是如何模擬的一個邏輯和順序,還有個人需要具備的知識點,差不多就這樣!請各位大神們指教!
我自己用wpe去截取了幾個明文封包嘗試去模擬幾個封包,但是模擬結果為10個連接數之后服務器就對我一直拒絕連接,除非我斷開之前的10個連接才能繼續連接,但是這個時候我用網頁訪問還是可以連接的,別人寫的商業人氣軟體是一個連接ip和埠是可以有20個連接數,總共可以有920個連接,而我自己寫的只能有10個連接,11個就是永遠的拒絕連接!
我就想知道如果我想寫出這樣的一個軟體我應該怎么去學習,還有這個軟體的邏輯順序等。
給一下我自己的代碼(我自己的代碼也是從網上找到的邏輯自己慢慢寫出來的,但是這個邏輯肯定是錯的)
IP連接部分我沒放上來,下面代碼就模擬了一個部分就是模擬登錄,確實可以登錄但是登錄到10個就拒絕連接。
本地就算換埠繼續連接還是無法連接。
var
RequestStr,BackStr:string;
username:string;
password:string;
time:string;
RoomID:string;
salt:string;
uuid:string;
vk:string;
p:string;
t1,t2:string;
begin
username:='';
password:='';
time:=IntToStr(DateTimeToUnix(Now)-8*60*60);//時間戳
RoomID:=Edit1.Text;//房間號
salt:='7oE9nPEG9xXV69phU31FYCLUagKeYtsF';//未知值
uuid:=uuidsetup();//16個16進制的隨機位元組數
vk:=StrToMD5(time+salt+vk);//未知值
{p:='type@=loginreq/username@=/password@=/roomid@='+RoomID+'/ct@=2/devid@='+uuid+'/ver@=20150505/rt@='+time+'/vk@='+vk+'/';}
t1:=hextostring('B8000000B8000000B1020000');
t2:=hextostring('00');
p:=t1+'type@=loginreq/'+
'username@='+username+'/password@='+password+'/roompass@=/roomid@='+
RoomID+'/devid@='+uuid+'/rt@='+time+'/vk@='+vk+'/ver@=20150929/ct@=0/'+t2;
//memo1.Lines.Add(p);}
if socket.Connected then
begin
RequestStr:=p;
try
socket.Write(RequestStr);//發送1
Memo1.Lines.Add('發送資料:'+RequestStr);
t1:=hextostring('1F0000001F000000B1020000');
RequestStr:=t1+'type@=qrl/rid@='+RoomID+'/'+t2;
socket.Write(RequestStr);//發送2
BackStr:=socket.ReadLn('',1000); //實際上timeout是不起作用的,indy本身
//的bug;此時如果server端無資料則會死等
Memo1.Lines.Add('回傳資料:'+BackStr);
except
ShowMessage('發送資料失敗!');
end;
end
else
begin
Memo1.Lines.Add('連接已被斷開,無法發送!');
end;
end;
uj5u.com熱心網友回復:
解決了么?我不同ip總共只能加10個,多的就不行了。。。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/74551.html
標籤:網絡通信/分布式開發
上一篇:WIN7 64位開發 嵌入桌面了但還是無法半透明。怎么都不行。求解
下一篇:delphi 截取字串
