Quando ti connetti a un canale succedono queste cose:
1. Il server manda "1" al client per dire che supporta il protocollo WinMX
2. Il client manda una chiave ( 0x57 un Chat Client )
3. Il server manda una chiave ( 0x58 un Chat Server )
4. Il client e il server usano la chiave scambiata al punto 3 per generare le chiavi successivamente usate per mandare e ricevere
---- La comunicazione da qui in poi è crittata basandosi sulle chiavi create al punto 4
5. Il client manda un messaggio di compatibilità 3.53 (saltato dai client 3.31)
6. Il client richiede di entrare
7. Il server accetta la richiesta
8. Il server mada un messaggio di compatibilità 3.53 (saltato dai server 3.31)
9. Il server manda il topic
10. Il server manda il motd
11. Il server manda "qualche idiota è entrato" a tutti :)

Se stai facendo il tuo server allora è meglio se mandi qualche segnale che lo identifichi tra il passo 8 e il 9 (ad esempio se vuoi mandare un 0xFFFF così i client possono sapere che è il tuo server) Se i client desiderano mandare un tipo di dati per indicare che client sono dovrebbero farlo ovunque dopo la richiesta di entrata, meglio se dopo che il server ha accettato la richiesta.

Tipi di messaggio:

I messaggi sono così formati:
[Tipo - 2 Bytes] [Lunghezza dei dati - 2 Bytes] [Dati - Qualsiasi lunghezza]

Il formato è mostrato nella parte "Dati" del messaggio, nella forma [Dati:Lunghezza] [Dati:Lunghezza] (lunghezza in byte) {[Dati:Lunghezza]} significa che è una parte opzionale

Note:
Anche se il protocollo usa 4 byte per indicare il numero di file, WinMX permette al massimo 65535 file, non si sa il motivo di cio
Alcuni tipi di messaggi non richiedon nulla nel formato dati (puoi mettere qualsiasi cosa nel contenuto, sarà ignorato), alcuni formati sono vuoti per questo motivo
Una lunghezza N indica una stringa di qualsiasi lunghezza che finisce per NULL
Il Primary IP e la porta UDP dell'user in primaria al quale ti colleghi, sono usati per il Browse/Whois/Messaggi privati eccetera
Ci sono 4 protocolli nella lista, 3.31 che indica WinMX 3.31, 3.53 che indica WinMX 3.53, RoboMX che indica le aggiunte di Bender e Extended che indica le aggiunte di KM

Tipo Mittente Nome Protocollo Descrizione Formato Dati
0x0064 Client Richiesta di entrata Entrambi Richiesta di entrata nella stanza [NomeStanza:N] [Linea:2] [PrimaryIP:4] [PrimaryPort:2] [Files:4] [UserName:N]
0x0065 Client Cambio di nick Entrambi Richiesta di cambiare nick [linea:2] [PrimaryIP:4] [PrimaryPort:2] [Files:4] [UserName:N]
0x0066 Server Richiesta accettata Entrambi Sei entrato nella stanza
0x0068 Server Supporto 3.53 3.53 Indica che il server supporta il protocollo 3.53
0x0069 Server Stanza RoboMX RoboMX Indica che la stanza è hostata con RoboMX
0x006E Server User entrato 3.31 Un nuovo user è entrato [UserName:N] [PrimaryIP:4] [PrimaryPort:2] [Linea:2] [Files:4]
0x006F Server Notifica user 3.31 Per mandare la lista iniziale di user [UserName:N] [PrimaryIP:4] [PrimaryPort:2] [Linea:2] [Files:4]
0x0070 Server Cambio di nick 3.31 L'user ha cambiato nick [VecchioNome:N] [VecchioPrimaryIP:4] [VecchiaPrimaryPort:2] [NuovoNome:N] [NuovoPrimaryIP:4] [NuovaPrimaryPort:2] [Linea:2] [Files:4]
0x0071 Server User Entrato 3.53 Un nuovo user è entrato (no vista IP) [UserName:N] [PrimaryIP:4] [PrimaryPort:2] [Linea:2] [Files:4] [Rank:1]
0x0072 Server Notifica user 3.53 Per mandare la lista iniziale di user [UserName:N] [PrimaryIP:4] [PrimaryPort:2] [Linea:2] [Files:4] [Rank:1]
0x0073 Server User uscito Entrambi Un user è uscito [UserName:N] [PrimaryIP:4] [PrimaryPort:2]
0x0074 Server Cambio di nick 3.53 Un user ha cambiato nick, Nota: i cambi di nick sono usati anche coi cambi di livello [VecchioNome:N] [VecchioPrimaryIP:4] [VecchiaPrimaryPort:2] [NuovoNome:N] [NuovoPrimaryIP:4] [NuovaPrimaryPort:2] [Linea:2] [Files:4] [Rank:1]
0x0075 Server User entrato 3.53 Un nuovo user è entrato (vista IP) [UserName:N] [PrimaryIP:4] [PrimaryPort:2] [Linea:2] [Files:4] [Rank:1] [IP:4]
0x0078 Server MOTD Entrambi MOTD iniziale / Cambio MOTD [MOTD:N]
0x00C9 Server Testo normale Entrambi Per il testo normale nella stanza: <Pippo> ciao Pluto [UserName:N] [Testo:N]{[Rank:1]}
0x00C9 Client Testo normale 3.31 Manda testo normale [Testo:N]
0x00CA Client Action 3.31 Manda scritte in viola [Testo:N]
0x00CB Server Action Both Per il testo viola in chat: Pippo prende per il culo Pluto [UserName:N] [Testo:N]
0x00D2 Server Testo generico 3.53 Solitamente usato per le risposte del server (es. "Unknown Command")
Usato anche per OPMsg/Watchcmds e altri messaggi.
Usato anche per testo colorato
[Testo:N]
0x00D3 Server Comandi Admin 3.53 Comando scritto (echo del comando che hai dato) [Testo:N]
0x012C Server Topic Entrambi Topic iniziale / cambio di Topic [Topic:N]
0x012D Server Cambio del nome Stanza 3.53 La stanza ha cambiato nome (comando /setchannelname) [ChannelName:N]
0x0190 Server Redirect Entrambi Stanza Redirectata [ChannelName:N]
0x13ED Client Supporto 3.53 3.53 Mandato dal client prima della richiesta di entrata per indicare che supporta il protocollo 3.53 [0x31:1]
0x13EE Client Redirectato 3.53 Mandato dal client 3.53 che è stato redirectato (Per il blocco dei redirect) [ChannelName:N]
0x1450 Client Testo 3.53 Manda del testo alla stanza (Il testo dovrebbe essere esattamente com'è scritto) [Testo:N]
0x9900 Server Supporto IP Send Esteso Vedere se il client supporta IP Send quando vien fatto admin
0x9901 Client Supporto IP Send Esteso Risposta al test supporto IP Send (Per indicare che è supportato l'IP Send)
0x9902 Server IP degli Users Esteso Mandare gli IP dei client
Nota: l'IP puo essere nella forma "1.2.3.4" oppure l'IP con relativo home host "1.2.3.4 [qualche.nomehost.it]"
[UserName:N] [PrimaryIP:4] [PrimaryPort:2] [Files:4] [Linea:2] [Rank:1] [IP:N]
0x9903 Server IPSend Completato Esteso Indica che è stato completato l'IPSend
0x9904 Server Codici Colore Esteso Usato dai server che supportan i colori per informare i client dei codici colori (per bot compatibili per riconoscere correttamente i nick) [StringaCodiceColore:N]
0x9905 Entrambi Identificazione Esteso I client e server compatibili possono riconoscere le loro versioni [Nome:N] [Versione:N]
0x9906 Server Text Flood Esteso Indica che sta mandando una grande quantità di testo, oppure che ha finito di mandarlo, il parametro 1 indica che inizia, 0 che finisce [InizioOFine:1]
0x9907 Server User Menu Esteso Permette al server di trasmettere il menu del tasto destro al client, Tipo: 0=Supportato, 1=MenuUser, 2=MenuStanza, 3=Scroll Wheel [Tipo:1] [Titolo:N] [TipoMenu:2] [Comando:N]
0x9907 Client User Menus Esteso Indica che supporta l'invio dell'user menud (in risposta al 0x9907 tipo 0)
0xFDE8 Entrambi Ping Entrambi I ping dovrebbero essere mandati ogni 45-60 secondi per tener viva la connessione, Nota: WinMX 3.53 li manda ogni 300 secondi ma questo causa problemi con alcuni firewall, così tempi migliori son raccomandati.
This Table was Take From KM's Old Website www.mxtools.net
© Copyright 2005 Winmx Unlimited All Rights Reserved
Traduzione revisione e correzione a cura di Eagle.

Ecco cosa pensano le persone...
Loggati e scrivi il tuo commento, e' molto importante per noi conoscere il tuo parere sui nostri articoli, grazie.



Powered by HackRoom
Attendere il caricamento...
Attendere il caricamento del vostro profilo...
Inserisci almeno due lettere
Attendere il caricamento...
Attendere il caricamento...