.| Autor | Beitrag |
|---|---|
|
000 27.11.2002, 15:09 JP |
Ich habe angefangen mit meinen neuen winsock "kenntinssen" einen kleinen instant messenger in der cmd zu hallo kann mir einer helfen? [edit]: ach, noch ne frage, wie kann ich was in der registry eintragen, oder einfach in ein verzeichnis kopieren? [/edit] --Free your mind and your ass will follow! Dieser Beitrag wurde am 27.11.2002 um 15:28 von JP bearbeitet. |
|
Profil || Suche |
|
001 27.11.2002, 16:24 Prefect |
send() sendet einen Stream, das heißt eine Folge von Bytes. Wenn du send() anweist, "Hello World" (Länge: 11) zu senden, dann werden auch 11 Bytes gesendet. recv() dagegen empfängt einen Stream, d.h. eine Folge von Bytes. Bei TCP empfängt recv() alle Bytes, die gesendet wurden, und es empfängt sie auch in der selben Reihenfolge. Allerdings ist die Aufstückelung der einzelnen Rückgaben von recv() nicht vorhersehbar. Letztendlich hast du also wohl eher ein Verständnisproblem was die Funktion vom Netzwerk angeht. Wenn du einzelne Strings versenden willst und die Grenzen der Strings beibehalten mußt, dann mußt du zusätzliche Informationen schicken um deutlich zu machen, wo die Stringgrenzen sind. Dazu gibt es zwei Möglichkeiten: Entweder du schickst die Länge des Strings vor dem eigentlichen String, oder du verwendest ein Delimiterzeichen. Wenn du nur Strings verschickst bietet sich letzteres an, da C-Strings schon Delimiterzeichen (nämlich \0) verwenden. Dazu sendest du mit send() einfach nicht nur strlen(string) Bytes, sondern strlen(string)+1 Bytes um die abschließende \0 mitzuschicken. Registry eintragen: MSDN durchsuchen. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
002 27.11.2002, 17:33 JP |
du hast mich glaube ich falsch verstanden perfect... bzw ich habs schlecht erklärt... cin>>buffer; auf der anderen seite: rc=recv(connectedSocket, buf, 128, 0); so sieht das innere der schleife aus, und ich bin der meinung, das er schon beim "cin>>buffer" befehl einen fehler macht und nicht beim senden, ich weiss nicht ob du recht hast, aber bei meinem vorherigen programm (einem texterschlüssler) hatte ich das selbe cin>>buffer; [eingabe: hallo <enter> wie <enter> gehts? <enter> ] bei dem verschlüssler hat er nämlich wenn man als Text "hallo wie gehts" eingab char Text[256]; aber trotzdem THX --Free your mind and your ass will follow! Dieser Beitrag wurde am 27.11.2002 um 17:39 von JP bearbeitet. |
|
Profil || Suche |
|
003 27.11.2002, 18:04 Tron |
cin nimmt leerzeichen, eingabetaste, tabulator als trenner, d.h. du gibst "hello world" _auf einmal_ ein und die schleife wird 2mal durchlaufen, einmal enthaelt buffer dann "hello" und das andere mal "world". aber prefect hat auch recht, beim empfaenger kannst du nicht erwarten, dass deine nachricht in einmem stueck ankommt (oder 2 nachrichten getrennt) <edit> 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett Dieser Beitrag wurde am 27.11.2002 um 18:05 von Tron bearbeitet. |
|
Profil || Suche |
|
004 28.11.2002, 10:46 Kriz |
Mach's genauer, Tröni =) cin.getline(char* buffer, int length_of_buffer, char delimiter='\n'); Aber ich find's immer wieder lolig, wenn Leute versuchen schon komplexere Projekte in Angriff zu nehmen und kaum Basiskenntnisse der Sprache haben, denn cin.getline() ist für C++ Basiswissen... Naja, ist wohl mittlerweile ne Art "Coderkrankheit" oso. Wie auch immer. --K:R-I)Z++ Dieser Beitrag wurde am 28.11.2002 um 10:47 von Kriz bearbeitet. |
|
Profil || Suche |
|
005 28.11.2002, 12:51 CN |
da bin ich deiner meinung.. vorallem in php kommt sowas oft vor ~_- -- |
|
Profil || Suche |
|
006 29.11.2002, 14:10 King of Darkness |
aber printf ist eine ;) aber mal zu dem cin ehrlich gesagt wuste ich von der cin.getline aber würde es nicht auf anhib einsetzen ... weil man nich dran denkt und weil man es sehr selten brauch ... da dos progies meiner meinung nach in vergessenheit geradeten (zu wenig möglich keiner der grafischen gestalltung) --Coding Center --- Tutorials über Programmierung und andere Themen |
|
Profil || Suche |
|
007 29.11.2002, 15:51 apfelkorn |
print wird aber in der nächsten version von php ( php 5 ) eine echte funktion und bleibt kein sprachelement mehr, wie echo... ja, ich freu mich schon drauf. -- |
|
Profil || Suche |
|
008 30.11.2002, 13:14 JP |
Kritz, hast du noch nie was davon gehört das man so am effektivsten lernt? ausserdem will ich SPAß haben und mich nicht nur mit Jetzt, noch ne frage...
also, wenn mir einer helfen kann... danke im vorraus! --Free your mind and your ass will follow! |
|
Profil || Suche |
|
009 01.12.2002, 10:20 [RMen]OneStone |
Nein! --georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/ |
|
Profil || Suche |
|
010 01.12.2002, 12:15 JP |
Dann klär mich doch bitte auf OneStone... --Free your mind and your ass will follow! |
|
Profil || Suche |
|
011 01.12.2002, 17:29 [RMen]OneStone |
Was gibbet da aufzuklären? Man soll erstselber denken, und wenn es keinen anderen Weg mehr gibt in ein Forum posten, nicht andersrum. --georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/ |
|
Profil || Suche |
|
012 03.12.2002, 15:48 JP |
Noch ne frage. ich will also auf der einen seite "system("dir");" ausführen und das ergebnis zur anderen seite Weiss einer wies geht? --Free your mind and your ass will follow! Dieser Beitrag wurde am 03.12.2002 um 15:51 von JP bearbeitet. |
|
Profil || Suche |
|
013 03.12.2002, 16:22 Ornest |
Kewl, in meinem PHP Buch (Jetzt lerne ich PHP) steht als Frage: "Welche Funktion schreiben Sie, damit Zeichenketten im Browserfenster ausgegeben werden?" Antwort: Print() btw. Sorry for OT --Dieser Beitrag wurde am 03.12.2002 um 16:22 von Ornest bearbeitet. |
|
Profil || Suche |
|
014 05.12.2002, 14:08 [RMen]OneStone |
JP: Crossposts sind net gern gesehen. (siehe ResourceCode Forum f. Antwort) --georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/ |
|
Profil || Suche |
|
015 05.12.2002, 16:02 CN |
hm mit dem buch hab ichs auch gelernt o_. |
|
Profil || Suche |
|
016 11.12.2002, 02:46 Gott |
hab vor einiger zeit mal nen messenger in delphi gebaut falls es dir was hilft kann ichs ja irgendwo hin uploaden , ach ja nen tool für denn win 2000 / xp nachrichten dienst hab ich hier auch noch .. --millirem und bequerel , kleine kinder sterben schnell Arsch für alles bei War in Europe |
|
Profil || Suche |
|
017 11.12.2002, 08:59 Kriz |
CN, da möchte ich mal widersprechen was print bei PHP angeht! Der Befehl echo z.B. ist keine Funktion, obwohl man ihn in zwei Varianten anwenden darf: echo "Hallo!"; und echo("Hallo"); (Die Varianten mit 'Hallo' und "Hallo" skippe ich mal... =) Der Befehl print dagegen ist eine Funktion, ob mit oder ohne Klammern: print "Hallo"; print("Hallo"); Der Grund ist der, daß print im Gegensatz zu echo einen Wert an den Aufrufer zurückgibt. Funktionen liefern i.d.R. einen Wert zurück, egal ob dieser Wert einen "Wert" hat oder nicht (void ist auch ein Wert, wenn auch ohne Inhalt und Datentyp). Funktionen ohne Wertrückgabe dagegen definiert die Informatik als Prozedur. Ich persönlich finde diese Trennung etwas schleierhaft, da in C/C++ z.B. eine Funktion void DoSomething(void) zwar als Funktion auftritt, aber im Grunde eine Prozedur ist. Prozeduren dürfen eigentlich keine direkte Änderung an Variablen durchführen, aber in C/C++ ist das sehr wohl möglich, indem innerhalb von DoSomething() globale Variablen verändert werden können. Daher finde ich diese Trennung suspekt. Nun denn, in PHP ist echo eher eine Art Makro wie cout, während print() deutlich an printf() herantritt. cout liefert auch keinerlei Werte zurück im Sinne einer Funktion (cout liefert nur eine Referenz auf sich selber zurück, wenn cout in einer Ausgabekette verwendet wird). Wie dem auch letztendlich sei: print ist in PHP eine Funktion, während echo eher in Richtung Prozedur/Makro geht. Cu --K:R-I)Z++ Dieser Beitrag wurde am 11.12.2002 um 09:02 von Kriz bearbeitet. |
|
Profil || Suche |
|
018 11.12.2002, 13:27 CN |
lass gut sein ×_# --Dieser Beitrag wurde am 11.12.2002 um 13:39 von CN bearbeitet. |
|
Profil || Suche |
|
019 11.12.2002, 13:58 Fraghunter |
Mist ;-) mhhh Nihil timeo, nulla re opprimor, nulli periculo cedo. |
|
Profil || Suche |
|
020 11.12.2002, 17:38 Prefect |
Wer verzapft denn sowas? Letztendlich sind doch Prozeduren nur Funktionen ohne Rückgabewert. Und wenn ein Programmteil weder einen Rückgabewert haben darf noch irgendwelche Variablen ändern darf dann könnte man den Aufruf dieses Programmteils eigentlich gleich bleibenlassen. Hmm - eine (absolut hypothetische) Konvention, die Unterprogramme ohne Nebeneffekte "Funktion" nennt und ein Unterprogramm mit Nebeneffekt "Prozedur" wäre im mathematischen Sinne vielleicht noch akzeptabel, aber doch sehr suspekt. Eine solche Trennung auf dem Syntaxlevel macht zumindest für herkömmliche Sprachen wenig Sinn. Andere Sprachen, die mehr auf der impliziten Beschreibung von Algorithmen basieren könnten davon evtl. profitieren. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
021 11.12.2002, 17:40 Tron |
aeh... kriz, dein post erscheint mir ziemlich wirr afaik ist print keine funktion, das mit den klammern verhaelt sich genauso wie in c++ folgendes beispiel: zudem ist cout kein makro, und erstrecht keine funktion: es ist ein ganz normales globales objekt. (eher kann man << als eine funktion sehen, die als parameter einen ostream& und irgendwas anderes nimmt und ostream& zurueckgibt) die trennung von prozedur und funktion bezieht sich nach meiner informationstechnischen bildung nur auf den rueckgabewert, im gegenteil, funktionen duerfen im mathematischen sinne nichts veraendern, sondern nur einen funktionswert liefern! (da haetten wir die wunderschoenen /: funktionalen programmiersprachen wie haskell) 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |

