Aprire un socket e' sempice, e si fa' usando questa sintassi:
/sockopen sockname server port
Sockname sara' il nome che gli abbiamo assegnato es: Antani, per questo valore non dobbiamo rispettare nessuno standard.
Server sara' il server a cui ci vogliamo connettere, dobbiamo subito precisare che quando andremo ad inserire il nome del server dovremo tralasciare la parte iniziale http:// o ftp:// e inserire solamente l'host
Quindi nel caso io volessi aprire una connessione con http://www.mondoscript.net/ scrivero'
/sockopen ircit www.ircit.net 80 e non
/sockopen ircit http://www.ircit.net 80
80 e' la porta.
Dopo che abbiamo aperto la connessione per dare un qualsiasi comando o istruzione al server useremo la sintassi
on *:SOCKOPEN:sockname: comandi
per chiuderla scriveremo
/sockclose sockname
magari con l'evento
on *:SOCKCLOSE:sockname: /echo -a qualcosa
Per inviare dati o comandi useremo il comando /sockwrite
/sockwrite -n sockname data
il -n e' usato per inserire un $crlf alla fine del comando, in modo che il server capisca che il comando stesso e' finito, se tralasciamo questo piccolo particolare il server non ci rispondera'
Puoi usare anche dei wildcards in sockname es:
/sockwrite antani* comando
inviera' il comando a tutti i socket aperti con questo nome Per leggere le informazioni che il server ti avra' inviato dovremo usare il comando sockread in questa sintassi:
/sockread %variable
Questo comando deve essere usato nell'evento
on *:SOCKREAD:sockname: comando Ora vediamo un'esempio per capire meglio on *:SOCKREAD:sockname:{
if ($sockerr > 0) return
; $sockerr ritorna un numero maggiore di 0 quando avverra' un errore.
:prossimo
sockread %temp
if ($sockbr == 0) return
; $sockbr ritorna il numero di byte.
if (%temp) { echo %temp }
goto prossimo
}
Ora vediamo come scaricare un file zip e un file di testo: (tecnica cut and paste in mirc editor)
alias antani { sockopen antani www.mondoscript.net 80 }
on *:sockopen:antani:{ if ($sockerr) { sockclose antani | halt } | sockwrite -n $sockname GET /prova.txt }
on *:sockread:antani:{
if ($sockerr > 0) return
:prossimo
sockread %risposte
if ($sockbr == 0) return
if (%risposte == $null) return
echo -a %risposte
goto prossimo
}
In questo caso scaricheremo un file di testo e leggeremo il contenuto nella finestra attiva.
Per scaricare un file zip, dobbiamo usare il metodo binario perche' in ASCII riceveremmo il file zip direttamente in status. se volete provare fate, al massimo riceverete righe come queste:
Eµ•ýÞµöÓ+¡Ê~¿×~wûÍF÷ŠâãÊ|‘lYïšÖ4#YïV§è) |UMT~·>ë·VÜ‚õ†É77B·UE¢ÝÅr×íREñº”±¢ø]ŠK:n uK¯A›ýÁÛÕHsoW'ͽ]4÷úziEש }¡úöêÔ;a=¯9+Õ
alias antispam { sockopen antispam www.mondoscript.net 80 }
on 1:sockopen:antispam:{ if ($sockerr > 0) return
echo -a Connessione a mondoscript.net
sockwrite -n $sockname GET /antispam.zip
}
on *:sockread:antispam:{
if ($sockerr > 0) return
:prox
sockread &tempfile
if ($sockbr == 0) { return }
bwrite antispam.zip -1 &tempfile
goto prox
}
Autore: Antani
|