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 Sub
Intre 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/