Mania Admin
Numarul mesajelor : 886 Varsta : 31 Data de inscriere : 05/04/2008
| Subiect: Visual Basic - Cum faci boti Direct Connect Joi Mai 15, 2008 9:29 pm | |
| [Visual Basic]Cum Sa Facem Boti De Direct Conect
Acum va voi invata cum sa faceti botzii pentru Direct Conect.
Sa incepem: Creati 3 butoane de comanda si le setati proprietatile asa:
Command1 - Name = Command1 Caption="Conecteaza" Command2 - Name = Command2 Caption="Deconecteaza" Command3 - Name = Command3 Caption="Trimite Msg" Apoi creati 4 textboxes si le setati proprietatile asa:
Text1 - Name="txtAdresa" Text1 - Text="Adresa" 'punem asa la text ca sa le putem deosebi pe forma ( aplicatie )
Text2 - Name=txtPort Text2 - Text="411" ' asta este portul default pentru huburi ( il lasam asa ca sa le putem deosebi)
Text3 - Name=txtMesaj Text3 - Text="Mesaj" ' mesajul care il trimite catre hub :-)
Text4 - Name=txtNick Text4 - Text="Nickname"
Dupa ce ati facut pasii de mai sus...puneti pe forma si un timer care sa aiba urmatoarele proprietati: Enabled=False Interval=350
Dupa ce ati pus si timer-ul acum duceti-va la ToolBox (in stanga de tot unde se afla obiectele (butoanele timere etc) )...acolo dati click dreapta si alegeti Components. Va aparea o fereastra...scroll down pana gasiti in lista de acolo Microsoft Winsock Control 6.0 bifati-l apoi click pe Apply si pe OK. Dupa cum vedeti..in toolbox a aparut un nou obiect...puneti-l pe forma si setatii proprietatile asa:
Name=sock Index=0
Acum dati dublu-click pe butonul Conecteaza ! Dupa cum vedeti..s-a deschis o noua fereastra...si au aparut 2 linii de cod:
Private Sub Command1_Click()
End Sub
Intre cele doua linii de cod...copiati urmatorul cod:
sock(0).RemoteHost = txtAdresa -winsock-ul care l-ati pus pe forma..apare cu numele sock 'cum v-am spus sa-l setati..apoi in paranteza este cifra "0" ' adica indexul...care v-am spus sa-l setati asa :-) 'remote host este egal cu txtAdresa adica se conecteaza la ' adresa pe care o scrieti voi in txtAdresa sock(0).RemotePort = txtPort ' idem ca mai sus doar ca remote port=txtPort ..adica se conecteaza ' la adresa de mai sus la portul care il scrieti voi in txtPort
sock(0).Connect ' acum se conecteaza Timer1.Enabled = True
Apoi reveniti la forma si dati dublu click pe butonul "Deconecteaza". Dupa cum vedeti iar au aparut o fereastra si 2 noi linii de cod:
Private Sub Command2_Click()
End Sub
Intre ele copiati urmatorul cod: On error Resume Next ' Error Handler sock(0).close 'codul asta inchide conexiunea cu Remote Host-ul
Reveniti la forma si dati dublu-click pe butonul "Trimite Msg". Dupa cum vedeti iar au aparut o fereastra si 2 noi linii de cod:
Private Sub Command3_Click() End SubIntre acestea copiati urmatorul cod:
On Error Resume Next sock(0).SendData "<" & txtNick & "> " & txtmess & "|" 'daca pui 500 de la fel trimite 500 mesaje..dar iei ban/kick imediat sock(0).SendData "<" & txtNick & "> " & txtmess & "|" 'asta este exemplu sock(0).SendData "<" & txtNick & "> " & txtmess & "|" 'si acesta deci botul acesta trimite pe hub 3 mesaje:)
Apoi din aceeasi fereastra...din dropdown-menu de sus...selectati general...si copiati urmatorul cod
Function Lock2Key(StrLock As String) As String ' asta e functia...trebuie copiata Dim TLock2Key As String 'mereu ..nu e necesar sa o inveti pe de rost Dim TChar As Integer Dim rLock As String If Len(StrLock) < 3 Then Lock2Key = Left$("BROKENCLIENT", Len(StrLock)) Exit Function End If For I = 7 To Len(StrLock) If Mid$(StrLock, I, 3) = " Pk" Then I = Len(StrLock) Else rLock = rLock & Mid$(StrLock, I, 1) End If Next I TLock2Key = Chr$(Asc(Left$(rLock, 1)) Xor Asc(Right$(rLock, 1)) Xor Asc(Mid$(rLock, Len(rLock) - 1, 1)) Xor 5) For I = 2 To Len(rLock) TLock2Key = TLock2Key & Chr$(Asc(Mid$(rLock, I, 1)) Xor Asc(Mid$(rLock, I - 1, 1))) Next I For I = 1 To Len(TLock2Key) TChar = Asc(Mid$(TLock2Key, I, 1)) TChar = TChar * 16 + TChar \ 16 'Swap bits 11110000 -> 00001111 TChar = TChar Mod 256 If TChar = 0 Or TChar = 5 Or TChar = 36 Or TChar = 96 Or TChar = 124 Or TChar = 126 Then Lock2Key = Lock2Key & "/%DCN" & Right$("000" & TChar, 3) & "%/" Else Lock2Key = Lock2Key & Chr$(TChar) End If Next I End Function 'aici se termina functia :-) Aceasta este functia LOCK2KEY...nu voi sta sa explic ce este si ce face... ca dureaza ceva..dar daca vreti sa va interesati mai mult despre ea si despre protocolul direct conect ...intrati aici:
http://gempond.com/odcps/ Apoi reveniti la forma..si dati dublu click pe Timer. Dupa cum vedeti iar a aparut o fereastra si 2 noi linii de cod:
Private Sub Timer_Timer()
End Sub
Intre ele copiati codul urmator:
On Error Resume Next Dim varkey As String Dim rLock As String Dim varlock As String sock(0).GetData varlock, vbString If InStr(varlock, "$Lock") Then For I = 1 To Len(varlock) If Mid(StrLock, I, 3) = " Pk" Then I = Len(varlock) Else rLock = rLock & Mid(varlock, I, 1) End If Next I varlock = rLock varkey = Lock2Key(varlock) sock(0).SendData "$Key " & varkey & "|" ' ce trimite catre hub sock(0).SendData "$ValidateNick " & txtNick & "|" ' "valideaza" nick-ul sock(0).SendData "$Version 1.0091|" ' ce trimite catre hub sock(0).SendData "$MyINFO $ALL " & txtNick & " <oDC>$ $Cable$$9421036014$|" ' ce trimite catre hub sock(0).SendData "$GetNickList|" ' ce trimite catre hub sock(0).GetData varuser, vbString ' ce trimite catre hub sock(0).SendData "$GetINFO " & txtNick & " " & txtNick & "|" ' ce trimite catre hub End If Timer1.Enabled = False
Ca sa intelegeti ce trimite catre hub bot-ul va recomand sa cititi/invatati protocolul direct conect...care il puteti gasi la:
http://gempond.com/odcps/ Puteti downloada sursa de aici | |
|