TCP Chat (Multi)

« Older   Newer »
  Share  
MrJacko
CAT_IMG Posted on 6/6/2013, 15:15     +1   +1   -1




Il titolo si commenta da solo: ebbene sì, che ci crediate o no, questa è una Multi Chat che utilizza il protocollo TCP
Qui sotto vi è una piccola spiegazione sulle funzioni relative ai due diversi script.
Server
Appena avviato lo script del server comparirà una GUI nella quale inserire l'ip del server, la porta da usare, il numero massimo di utenti (massimo 50, oltre quel valore non ho testato :D ) e, se si vuole, una password di cifratura dei messaggi da comunicare agli eventuali client.
Premendo su "Crea Server" si crea una seconda GUI con una EditBox in cui sono presenti i messaggi inviati ad eccezzione di quelli privati (si chiamano così per un motivo :asd:) e una ListBox in cui verranno inseriti i nomi utente. È inclusa la funzione Kick che sostanzialmente chiude il socket dell'utente selezionato nella soprastante ListBox e provvede ad avvertire gli utenti dell'accaduto :asd: (provare per credere :asd:)

Client
Appena aperto lo script del client comparirà una GUI in cui impostare: nome utente, indirizzo IP del server, porta del server e la password di cifratura (se presente) impostata dal server. Premendo Connetti si creerà una seconda GUI (scanso errore di connessione). In questa vi saranno presenti: una EditBox per i messaggi, una ListBox con i nomi degli utenti connessi (eccetto il proprio), una InputBox per scrivere il messaggio, una ComboBox per selezionare il proprio stato, una Label dove compare il ping (per aggiornarla basta cliccarci), un pulsante Clear per pulire la EditBox della finestra corrente e una CheckBox Sound per attivare o no il suono di notifica (presente nell'archivio); N.B. ogni qual volta si vuole avviare una conversazione privata facendo doppioclick su un nome utente nella ListBox si apre una nuova scheda; ogni qual volta ci si trova su una scheda che non sia la principale ("Group Chat") il pulsante "<<<chiudi finestra corrente" si attiva, consentedoci l'operazione di chiusura della scheda (la scheda può essere riaperto quante volte si vuole);
N.B. 2 il suono di notifica si disattiva automaticamente quando lo stato corrente è impostato su "AFK" o "Do not disturb", con possibilità di switcharlo manualmente


Guida per l'utilizzo in WAN (per chi non lo sapesse :P )
Il procedimento è sempre lo stesso ma con qualche piccolo accorgimento.
Innanzitutto bisogna aprire una porta del router in questo modo:
il protocollo deve essere ovviamente TCP, le porte interna ed esterna dovranno essere differenti e l'IP quello locale del server.
A questo punto il Server dovrà impostare come IP quello locale, come porta quella interna.
Stessa cosa per i client che si connettono via lan.
Per i client che non si trovano nella rete locale devono impostare come IP quello pubblico e come porta quella esterna.


In teoria questa script è abbastanza sicuro perchè per lo scambio di messaggi utilizza un' algoritmo di criptazione a 256 bit, tuttavia non mi alcuna responsabilità per eventuali danni arrecati dal suo utilizzo (evitate di scambiare dati molto sensibili attraverso questa chat)
In allegato sono presenti gli script del Server e del Client e il suono di notifica (per la gioia di FrontBack non ho uppato degli eseguibili :asd:).
Sono accetti consigli su miglioramenti e/o funzioni aggiuntive, nonchè segnalazioni di eventuali bug;
Questo script è toltamente opensource, modificatelo/miglioratelo a vostro piacimento ma sarei molto grato se si evitasse di ripparlo.

Edited by MrJacko - 16/7/2013, 16:37

Download attachment
TCP_Chat__Server___Client_.rar ( Number of downloads: 110 )

 
Top
riki107
CAT_IMG Posted on 6/6/2013, 15:42     +1   -1




L'ho provato, sembra perfetto, complimenti ^_^
 
Top
MrJacko
CAT_IMG Posted on 6/6/2013, 15:51     +1   -1




Grazie mille! :D
Se hai la possibilità di provarlo anche in wan te ne sarei grato poichè io non ne ho la possibilità, almeno al momento :)
 
Top
riki107
CAT_IMG Posted on 6/6/2013, 16:07     +1   -1




Nono mi dispiace, appena ne avrò la possibilità lo farò :)
 
Top
MrJacko
CAT_IMG Posted on 6/6/2013, 16:09     +1   -1




CITAZIONE (riki107 @ 6/6/2013, 17:07) 
Nono mi dispiace, appena ne avrò la possibilità lo farò :)

Io ci ho provato :asd:
 
Top
Hpmezzo
CAT_IMG Posted on 6/6/2013, 18:23     +1   -1




Ma ditemi una cosa ... Non funziona se i due pc sono collegati in due lan differenti.. Mi spiego... Non posso chattare con il mio parente di Torino o sbaglio? Perchè abbiamo un router diverso.. Vero??
 
Top
riki107
CAT_IMG Posted on 6/6/2013, 18:24     +1   -1




Veramente penso di si .-.
 
Top
MrJacko
CAT_IMG Posted on 6/6/2013, 18:53     +1   -1




In teoria, questo script funziona anche in WAN.
Mi spiego meglio:
Se tu vuoi ospitare il server per aprire una chat che non funzioni solo in LAN, basta semplicemente che tu apra la porta del router che imposti nel programma, impostando però sempre come IP quello locale (quello di default);
il client (che non si trova nella LAN) deve connettersi al server usando però l'IP pubblico del server.

Ripeto: non ho avuto modo di provarla in WAN; ciò nonostante, ho la certezza teorica che funzioni poichè un mio programma che usava il protocollo TCP funzionava bene in WAN. Gli unici problemi possono essere portati dalla gestione non superba dei socket.

EDIT: testato e funziona

Edited by MrJacko - 23/6/2013, 19:35
 
Top
Komas
CAT_IMG Posted on 23/6/2013, 09:46     +1   -1




Ciao MrJacko,
Grazie per il codice. Ho trovato un bug abbastanza noiso, spero che tu possa risolverlo presto :D

Ecco come ripetere l'errore
1) Impostare al server una password, es. Jacko
2) Aprire il client e:
a) Non mettere la spunta alla checkbox e cliccare su connetti
b) Mettere la spunta alla checkbox e scrivere la password sbagliata, cliccare su connetti
c) Mettere la spunta alla checkbox non scrivere nessuna password, cliccare su connetti

In tutti e tre i casi il client rimane "in stallo", non si può chiudere dalla X ma solo dal task manager. Ci vorrebbe un messaggio di errore e non lasciare il client in quel modo, ma non c'è bisogno che te lo spieghi :asd:

Una richiesta, vorrei vedere il mio user nella lista di destra del client, nella versione attuale non appare ma in tutte le "chat "c'è anche il tuo nome nella lista

Grazie e ciao

Edited by Komas - 23/6/2013, 14:47
 
Top
MrJacko
CAT_IMG Posted on 23/6/2013, 18:32     +1   -1




Innazitutto grazie per aver preferito il mio script tra i molti presenti sul forum (e non)!
Veniamo al dunque:
Ho già risolto da molto quanto da te scritto in precedenza aggiungendo in oltre molte altre funzioni utili; in effetti testando la chat con un mio amico in wan questo problema è stato uno dei primi a essere stati risolti poichè abbastanza irritante :asd:
Per la seconda richiesta devi soltanto capire una cosa: la funzione è stata appositamente creata in questo modo in maniera tale da visualizzare solo e solamente gli utenti connessi oltre a se stesso, cosa abbastanza ovvia; prendiamo l'esempio di facciadilibro (:asd:), hai mai visto nell'elenco di amici connessi il tuo nome? a meno che non ti interessi chattare in privato da solo :alone: puoi anche modificare quella parte di codice come meglio desideri
Appena ho tempo finisco di sistemare il codice e lo posto! Nel frattempo se ti va ricambia i miei sforzi con un +1 :D

P.S. vorrei sapere solo per un motivo puramente informativo cosa ti ha spinto a utilizzare questa chat fatta in autoit, in modo tale da poter integrare qualche funzione utile aggiuntiva
 
Top
Komas
CAT_IMG Posted on 24/6/2013, 08:11     +1   -1




Aggiunto +1
Ok, aspetto che tu posti la nuova versione (spero presto) :D
Quando lo fai, mi puoi indicare quale è la parte del codice da modificare ( mumero di linea e modifica ) per includere il tuo nome nella lista? Grazie, voglio chattare da solo :D

Per me le funzioni che ha vanno bene, deve essere una chat di base da utilizzare con amici, non servono mille funzioni. Non ha specificato cosa hai aggiunto quindi non posso dire molto, però non farti aspettare :asd:

Edited by Komas - 24/6/2013, 09:37
 
Top
MrJacko
CAT_IMG Posted on 25/6/2013, 19:35     +1   -1




Mi dispiace che dovrai aspettare un pò, è solo che ultimamente sono impegnato e sto dedicando più tempo al java che all'autoit (l'autoit è un pò troppo limitato per i miei gusti, basta guardare al multithreading) :asd:
Tra l'altro ho scritto abbastanza di fretta questo script e mi tocca rivisitare tutte le nuove funzioni per ottimizzarle...
Non te ne pentirai se aspetti un pò, promesso ;)

EDIT: ho aggiornato.

Edited by MrJacko - 3/7/2013, 18:26
 
Top
Komas
CAT_IMG Posted on 5/7/2013, 14:31     +1   -1




Bel lavoro, bravo :D
 
Top
12 replies since 6/6/2013, 15:15   491 views
  Share