aleborgMedlem sedan jan. 20013 341 inlägg Håller på med ett projekt, en chatt!
Vill ha lite tips på hur man ska göra, när man kopplar upp sig till chatservern från klienten så ska man skicka över användarnamn, måste man göra det med:
socket.Send(user_name.GetBuffer(1),user_name.GetLength());
Eller kan man skicka det på något annat sätt? Är det smidigare att öppna en extra port där man skickar diverse kommandon i stället för på samma port som man skickar chat-texten?
nikoMedlem sedan juni 20022 599 inlägg Är verkligen ingen chatexpert, men lite spontana tankar:
Är det smidigare att öppna en extra port där man skickar diverse kommandon i stället för på samma port som man skickar chat-texten?
Att belasta servern med det dubbla antalet öppna sockets, om man inte absolut måste, känns onödigt. (Det beror ju iofs på hur storskalig chaten skall vara.)
Om klienten isåf öppnar både kanalerna (vilket är bäst av brandväggsskäl) så måste servern ha nån mekanism för att avgöra hur anslutningarna hör ihop parvis. Att matcha på IP räcker inte (pga NAT) så nån form av unikt ID måste isåf skickas.
Det enklaste är kanske ändå att använda en anslutning per klient och låta varje meddelande inledas med en kontrollkod som talar om hur datan ska tolkas (inloggning, chatmeddelande, utloggning osv .. )? Eller varför inte vara trendig och skicka all data som XML-strängar?
Exempel:
<data>
<user>Nisse</user>
<room>love nest</room>
<type>chatmessage</type>
<smiley>upset</smiley>
<body>Nej, men fy! Jag är inte en sån pojke.</body>
</data>
På så sätt blir alla paket självbeskrivande och det blir lätt att parsa datan serverside och att lägga till nya funktioner utan att ändra i gammal kod.
aleborgMedlem sedan jan. 20013 341 inlägg Men hur plckar man enklast ut "Nisse" ur koden?
nikoMedlem sedan juni 20022 599 inlägg Med en XML-parser som tex MSXML.
OBS: Jag säger inte att XML är det bästa i ditt fall. Om det är ett större projekt så är det nog ett väldigt smidigt lösning för att kunna ändra format och lägga till nya "features" utan att bryta befintlig kod.
Om det är ett mindre "hobbyprojekt" och du aldrig jobbat med XML så kanske det är over-kill. Jag vet inte. Jag har tex själv aldrig använt MSXML i MFC, bara i VB.
Marcus EMedlem sedan maj 20021 466 inlägg Varför inte använda IRC om du ska göra en enkel chatt? Då behöver du uppfinna ett eget protokoll.
Protokoll finns här:
http://www.irchelp.org/irchelp/rfc/rfc2812.txt