Client/Client chat

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
OpelGT
Inlägg: 269
Blev medlem: 15 juni 2003, 22:20:52
Ort: Varberg

Client/Client chat

Inlägg av OpelGT »

Hej!

Om man tar Teamviewer så kontaktar man en server för att hitta klienten/datorn, men kommunikationen tror jag går bara mellan klienterna och servern är bara inblandad i uppstarten.

Är det någon som har ett tips på hur man gör ett chat program i C# mellan klienter som fungerar på samma sätt.

När jag googlar så hittar jag inget, så någon som har tips på vad man söker på.

Trevlig kväll!
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Client/Client chat

Inlägg av lillahuset »

Vad får dig att tro att servern bara är inblandad i uppstarten? Om jag minns rätt laddar båda parter hem klienter de vet väldigt lite om.
http://alternativeto.net/software/teamv ... cense=free
https://www.quora.com/What-is-the-best- ... er?share=1

Att de är open source är ingen garanti att de inte snokar men risken är nog mindre.
Muppis
Inlägg: 275
Blev medlem: 15 februari 2007, 10:26:28
Ort: Halmstad

Re: Client/Client chat

Inlägg av Muppis »

Teamviewer fungerar som så att båda klienter ansluter till Teamviewer-servern, berättar sina ID-nummer, vilken IP de har och vilken port de vill att andra klienter ansluter till, sen håller de antagligen anslutningen vilande sålänge datorn är igång för att TS-servern enkelt ska kunna berätta när en ny klientanslutning är påväg, TS-servern antecknar deras externa IP-nummer utifall att de sitter bakom NAT.

När en klienten vill ansluta till en annan frågar den TS-servern om IP-adress och port de ska ansluta till. TS-servern svarar och skickar också ut ett meddelande till motparts-klienten att någon vill ansluta från IP:port. Sen utför klienterna lite magi med http://stackoverflow.com/questions/8819118/tcp-hole-punching och antagligen också UDP för snabbare överföring av bild och ljud.

TCP Hole Punching behövs för att ta sig igenom NAT i hemmaroutrar.
Användarvisningsbild
papabear
Inlägg: 821
Blev medlem: 14 mars 2004, 03:27:12
Ort: Eskilstuna
Kontakt:

Re: Client/Client chat

Inlägg av papabear »

Lättast är nog att googla "chat c# tcp". Finns några exempel som använder system.net.sockets. Sen får man baka ihop klient och server i samma app. Server-delen används när du tar emot "samtal".

Edit: kom ett svar medan jag skrev, men jag tror mitt är relevant också.
OpelGT
Inlägg: 269
Blev medlem: 15 juni 2003, 22:20:52
Ort: Varberg

Re: Client/Client chat

Inlägg av OpelGT »

Tack för alla bra svar!

Nu är jag på rätt spår. p2p chat är det som jag söker.
http://www.codeproject.com/Articles/212 ... ed-via-P-P
Användarvisningsbild
maDa
Inlägg: 4076
Blev medlem: 11 november 2005, 22:13:16
Ort: Malmö
Kontakt:

Re: Client/Client chat

Inlägg av maDa »

TeamViewer är inte peer2peer somsagt. Allt går vi servas servers för att kunna fungera över NAT.
johano
Inlägg: 1943
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

Re: Client/Client chat

Inlägg av johano »

Nja, behöver ju inte gå över server för själva chattrafiken, googla på "nat holepunching"

/johan
Nerre
Inlägg: 26695
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Client/Client chat

Inlägg av Nerre »

Det är ju inte alltid som "holepunching" fungerar.

Om routern inte har uPnP eller liknande så kan en klient på insidan inte öppna en port som lyssnar på trafik från vilken IP-adress som helst. NAT-mappningen tar ju nästan alltid hänsyn till både portnummer och IP-adress för den externa parten.

Inkommande trafik från "fel" IP-adress och port kommer att droppas eftersom den inte går att matcha mot nåt befintligt koppel.

Då måste man ha fallback till att gå via servern (den kommer ju då dock bara att skyffla trafik mellan två klienter).
Skriv svar