Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
24.12.2002, 14:30
Diablo_bth



also ich dachte mir, es wäre doch mal cool, wenn mal alle Coder die lust haben ein gemeinsames Pojekt machen würden. Ich dachte da konkret z.B. an einen Instant-Messanger bzw chat Programm. Nicht um das Rad neu zu erfinden, sondern um Erfahrungen im Net-Coding auszutauschen. Ich in diesem Gebiet relativ neu und würde gerne Programmiertechniken und Ideen über Net-Coding von anderen Leuten erfahren.

als Beispiel hab ich mal angefangen einen einfaches dreckiges Consolen-Messaging Teil zu coden:
http://mitglied.lycos.de/diablo_bth/client_server.cpp

wer Vorschläge und verbesserungen hat, kann dann hier einfach den modifizierten Source posten

Wäre cool wenn sich andere auch dafür Interessieren..
Cya Diablo

--


Dieser Beitrag wurde am 24.12.2002 um 14:32 von Diablo_bth bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
24.12.2002, 15:59
Mazze



Prinzipiell wär ich dabei

Nur das dumme ist, dass ich keine Erfahrung in Net-Coding hab.

cu
Matze

--

BattleTech-MOD:
http://bthl.unitedgaming.net/

zum Seitenanfang zum Seitenende Profil || Suche
002
24.12.2002, 18:03
snoopdog



also ich hätte auch schon interesse udn kenne mich auch etwas mit den schönen WinSockets aus, nur mir mangelt es momentan an Zeit, da ich momentan etwas sehr mit der organisation einer LanParty beschäftigt bin. Aber ich arbeite nebenbei an nem kleinen FTP Client. Momentan zwar auch nur konsolenmäßig, zum testen, aber wenn es klappt wollt ich den auf Windows und somit Grafischer Oberfläche portieren. Ich kann ja mal etwas source posten, soweit ich bin, ist ne Sache von ner halben stunde :) dann hatte ich keien zeit mehr :(
Quellcode:
#include <stdio.h>
#include <winsock.h>

int startWinsock()
{
    WSAData wsa;

    return WSAStartup(MAKEWORD(2,0),&wsa);
}

int main()
{
    long rc;
    SOCKET s;
    SOCKADDR_IN addr_in;
    char username[] = "user user\n\r";
    char pwd[] = "pass user\n\r";


    rc = startWinsock();

    if(rc!=0)
    {
        printf("Fehler");
        return 1;
    }
    else
    {
        printf("Erfolgreich gestartet\n");
    }

    s = socket(AF_INET,SOCK_STREAM,0);
    if(s==INVALID_SOCKET)
    {
        printf("Fehler beim starten");
        return 1;
    }
    else
    {
        printf("Socket erstellt\n");
    }

    memset(&addr_in,0,sizeof(SOCKADDR_IN));

    addr_in.sin_family = AF_INET;
    addr_in.sin_port = htons(21);
    addr_in.sin_addr.s_addr = inet_addr("127.0.0.1");

    if(rc==SOCKET_ERROR)
    {
        printf("Fehler\n");
    }
    else
    {
        printf("Verbunden\n");
    }

    rc=send(s,username,strlen(username),0);
    rc=send(s,pwd,strlen(username),0);


    return 0;


}

ist eigentlich nur das aufbauen eienr verbindung, kann sich ja mal Mazze ansehen. Übrigens, das einloggen geht noch nicht, ich muss erst die Antwort vom Server empfangen,dann kann ich erst das PWD schicken, hmm ich glaub ich nehm mir heut Abend mal wieder etwas Zeit.

--

Visit our 500er Gamer Lan
@ www.evil-lanparty.de or
@ www.evil-havoc.com
Visit the HaVoc Lanparty Community
@ www.havoc-lanparty.com

zum Seitenanfang zum Seitenende Profil || Suche
003
24.12.2002, 18:37
gerk



Ich würde dir sehr gerne dabei helfen, aber auch mir mangelt es leider an Zeit. Mit Winsock hab ich bisher noch nicht so viel rumgespielt. Was dabei rausgekommen ist:

-)einen billigen konsolen-chat
-)ein harmloser Trojaner um Kumpels auf ner privaten Lan zu ärgern. Und jetzt nach Möglichkeit keine Scheiße posten, was für ein Dau ich bin. Denn: Das Programm war nur zum Lernen gedacht (ich habe damit meine Winsock-Kenntnisse ein wenig vertieft) und außerdem hat es meinen Rechner niemals verlassen. Das war übrigens für mein C++-Wissen ein sehr nützliches Projekt, denn ich habe da eine ganze Menge (imo) über das Parsen der Client-Messages etc. gelernt. Wenn Nachrichten verarbeitet werden und der Client in der Zwischenzeit weitere Nachrichten sendet, dann befinden die sich alle in einer Wurscht um Buffer. Darum musste ich eine Funktion schreiben, die den ganzen Buffer in einzelne Nachrichten aufteilt, den Array neu sortiert usw.

Nach einem Nachmittag war sie dann fertig, und ich wieder ein klein wenig wissender.

Warum ich das poste?
Keine Ahnung. Wahrscheinlich möchte ich damit zeigen, dass prinzipiell Intersse besteht, aber die Zeit nicht gegeben ist (leider). Denn ich hätte wirklich gerne mit jemandem wie Diablo zusammengearbeitet, da der doch in C++ um einiges mehr auf dem Kasten hat als ich, und ich bestimmt noch mehr lernen hätte können.

Greets,
Lag

P.S.:@Diablo: Wie wärs, wenn du ein bisschen OOP in das Programm bringst? :D

--

„Und da wir uns ja seit heute etwas näher gekommen sind, kann ich nur sagen: Mir hilft da immer Norther volle Lautstärke (so wie jetzt), sodass die ganzen unrasierten, Wasserpfeife rauchenden, alternativen Wichsstudenten aus ihren, aus Bananenschalen und Abfall gebastelten, Sitzkissen fliegen.“


Dieser Beitrag wurde am 24.12.2002 um 18:39 von Lag of death bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
004
25.12.2002, 10:58
[RMen]OneStone



Grundsätzliches Interesse hätte ich auch, allerdings fände ich es vielleicht sinnvoller nicht das Rad ganz neu zu Lernzwecken zu erfinden, manchmal kann man ja auch eckige Räder erfinden... Damit will ich sagen, dass wir ja auch erstmal für den Anfang "nur" nen Client für ein bestehendes System, wie z.B. IRC, coden könnten. Es wäre dann mal ne Herausforderung, wenn man das ganze mit ner dreidimensionalen GUI (sprich OpenGL) verbinden würde, denn dann könnte der Client echt was hermachen. So könnte man z.B. verschieden Räume auf verschiedenen Ebenen darstellen, oder man könnte sogar bekannten bestimmte Models zuweisen, es gibt da ja reichlich Möglichkeiten.

Wenn ihr oder wir so ein Projekt dann umsetzen würden, dann würd' ich es aber auf jeden Fall in englisch machen, dann hat die Allgemeinheit mehr davon (weil sie größer ist).

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
005
25.12.2002, 11:29
Zeeke



Zitat:
[RMen]OneStone postete
Wenn ihr oder wir so ein Projekt dann umsetzen würden, dann würd' ich es aber auf jeden Fall in englisch machen, dann hat die Allgemeinheit mehr davon (weil sie größer ist).
Oder man macht das ganze fähig für Sprachdateien :P So hat man nämlich noch mehr davon... Fans können die englische Sprachdatei dann in ihre Muttersprache usw übersetzen... zumindest ich fänd's besser so :-)

--

zum Seitenanfang zum Seitenende Profil || Suche
006
25.12.2002, 14:35
Diablo_bth



die Sache scheint ja regen Zuspruch zu finden..

eigentlich wollte ich nur eben Erfahrungen mit Net-Coding machen bevor ich meine Engine auf ein Client/Server Model umbaue (damit ich nicht 20x das Zeug umprogrammieren muss). Wenn man dazu den Code z.B. von q1 anschaut kriegt man ja das Kotzen.... (nix gegen Carmack aber das ist echter Mist)

Wenn ich in nächster Zeit etwas Zeit finde, dann Packe ich das ganze Teil mal in eine kompakte Netdriver-Klasse.

Die Sache mit einem OpenGL-Visualisierung klingt grundsätzlich Interessant - zumal ich (so unglaublich das Klingt) so gut wie keine Erfahrung mit Win32 GUI habe und das auch nicht für nötig halte - denn schließlich kann man mit eigenen Klassen+OpenGL+Scriptparsern wunderbare Konfiguations und Menu-Systeme machen...

--

zum Seitenanfang zum Seitenende Profil || Suche
007
25.12.2002, 14:51
snoopdog



Diablo??Hmm das versteh ich jetzt nicht??Wieso hast du keien Erfahrung mit der Win32 GUI ?? Die brauchste doch für OpenGL oder nimmst du GLUT bzw. SDL, ???

--

Visit our 500er Gamer Lan
@ www.evil-lanparty.de or
@ www.evil-havoc.com
Visit the HaVoc Lanparty Community
@ www.havoc-lanparty.com

zum Seitenanfang zum Seitenende Profil || Suche
008
25.12.2002, 22:24
Diablo_bth



naja wenn du nen Window, (GL-)Device-Context und nen Pixelformatsdescriptor als Erfahrung mit Win32 GUI ansiehts....

--

zum Seitenanfang zum Seitenende Profil || Suche
009
25.12.2002, 22:30
the_viking



echt jetzt, diablo?
Womit arbeitest du? MSVC++? Wenn ja:
Da gibt es sowas wie MFC. Das ist soähnlich wie das API-WinGUI

Aber mit OGL kann man ja seine eigenen GUIs proggen :) hab ich mal mit DirectX gemacht, aber mit den HDC-Funktionen von Win: war saulangsam! =)

Wie siehts eigendlich mit deiner engine aus? Ich hab meine grad soweit das sie *.map's parsen kann und shaders funzen

--

thx, cu, MfG the_viking

(( My =]=H=O=M=E=> Page! ))
Coder bei Brainshock-Interactive und bei Z-Software
My ICQ: #160959446

zum Seitenanfang zum Seitenende Profil || Suche
010
26.12.2002, 14:51
snoopdog



naja Diablo ich hät mir schon gedahct, das du erstmal die Win-Api versuchst zu lernen,bevor man mit oGL anfängt...
@the_viking, du kannst ja auch oGL oder DX mit der MFC nutzen, dann bnrauchste dich nciht um die MessageLOOP kümmern und so...

--

Visit our 500er Gamer Lan
@ www.evil-lanparty.de or
@ www.evil-havoc.com
Visit the HaVoc Lanparty Community
@ www.havoc-lanparty.com

zum Seitenanfang zum Seitenende Profil || Suche
011
26.12.2002, 19:32
apfelkorn



öhm.... diablo: ehrlich gesagt finde ich den netcode von carmack für seine zeit schon ziemlich genial (klar man kann alles besser machen) aber nur nebenbei: du kannst sicher sein das das ganze framework für deine grafikengine (die du ja schon fast[?] fertig entwickelt hast) nochmal so lange dauert. Aber so nebenbei: bei netcode würd ich gerne logisch mitentwickeln...

--

zum Seitenanfang zum Seitenende Profil || Suche
012
26.12.2002, 22:10
Diablo_bth



@viking: ja ich kenne MFC und vom *.map-Parser bis zur eigenen Engine ist es noch ein weiter Weg. Ich erinnere nur mal an meinen *.map-Viewer (mein erster Versuch in diese Richtung).
Damals habe ich viel über BSP gelesen und die HL-Compiler-Toolz studiert. Heutzutage kriget man das ja fast alles als Tut vorgesetzt und man muss da praktisch nicht mehr die eigene Gehirnmasse anstrengen.

sich mit der WInAPI rumzuärgern finde ich ehrlich gesagt Zeitverschendung! Da gibts echt Sinnvolleres. Irgendwann wird dieses Wissen nämlich nutzlos sein (gesegnet sei dieser Tag!). Bei einer 3D-Graphikengine lernt man ein Menge an Code-Design/Logig, Mathematik (besonders im Bereich analytischer Geometrie) und natürlich efizientes Programmieren. Wenn ich da an meine Anfänge mit VB denke. Das is ja ne Beleidigung für die x86 Architektur. Nen Programm wie in Paint schreiben... - für mich die Reinkultur an M$-Verarschung

--

zum Seitenanfang zum Seitenende Profil || Suche
013
28.12.2002, 23:43
Diablo_bth



ok ich hab nun mal die ganze Sache in eine schöne net-Treiber-Klasse gepackt. Das Kommunikationinterface bediehnt sich dabei der jeweils besten Eigenschaften des quake1 und quake2 Systems. Wie in q1 wird auf einem bestimmten Port eine Client-Anfrage entgegengenommen. Doch die Kommunkation findendet immer über einen Client und einen Server-Socket statt (q2-like). Doch im Unterscheid sind die Ports dieser Sockets völlig frei wählbar. (das Prog nimmt den nächst besten). Bei einer Client-Anfrage wird nun dem Client der Serverport und dem Server der Clientport mitgeteilt. erst nach dieser Prozedur können Server und Client miteinenader komminuzueren. Das hört sich zwar umständlich an - ist jedoch aus meiner sicht das beste. Wer das mal anscheuen will oder gar Lust bekommen hat weiter zu coden oder gar einen ipx/spx Treiber schreiben will, der ziehe das hier:

http://mitglied.lycos.de/diablo_bth/client_server.z

das muss dann in .zip umbenannt werden, da diese homosexuellen Admins bei tripod keine .zip-Downloads mehr zulassen....

--


Dieser Beitrag wurde am 28.12.2002 um 23:45 von Diablo_bth bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
014
02.01.2003, 15:06
programier_fan



Kann nur ein bisschen C++,wenn ihr mich einführen könntet wäre ich euch natürlich sehr verbunden;-)

--

Hey du cheatest!Das hab ich durch die Mauer gesehen...

zum Seitenanfang zum Seitenende Profil || Suche
015
02.01.2003, 16:03
apfelkorn



@diab: ich hab mir gerade deinen sourcecode angesehen und mir ist was aufgefallen:

device = new cm_wsupd_device();
// device = new cm_wstcp_device(); // probieren wir mal tcp - das funtzt so noch net!!

der unterschied zwischen udp und tcp ist das eine udp-verbindung soz. eine lose verbindung ist wobei man mit einem device von verschiedenen ports horchen kann, während tcp eine feste verbindung darstellt, die auf port und hosts festgelegt ist, was bedeutet, dass dort das device alle verbindungskontrollen übernimmt. In deinem Fall wird aber nur eine UDP-verbindung funktionieren.

--

zum Seitenanfang zum Seitenende Profil || Suche