TCP-Problem mit Dateien
Übersicht

![]() |
EingeproggtBetreff: TCP-Problem mit Dateien |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo...
Ich wollte mir mal schnell ne TCP-Funktion zum übertragen von Dateien schreiben. Also die Grundstrkutur eines TCP-Programms hab ich ja, aber aus irgendeinem Grund empfange ich nur "0" (Ascii 48), obwohl ich einen String mit 567 Zeichen sende. Sind soviel Zeichen zuviel für TCP? Oder liegt es daran, dass der String eig Binärdaten aus einer PNG enthält? Hier mal mein Versuch: Code: [AUSKLAPPEN] ;Sender
Reader=ReadFile("Alien.png") tcpstream=OpenTCPStream("192.168.20.2",7999) If tcpstream Then Repeat tcpstring$=tcpstring+Chr(ReadByte(Reader)) Until Eof(Reader) WriteString tcpstream,tcpsttring tcpstring="" CloseTCPStream tcpstream CloseFile Reader EndIf Code: [AUSKLAPPEN] ;Empfänger
tcpserver=CreateTCPServer(7999) If tcpserver Then Repeat tcpstream=AcceptTCPStream(tcpserver) If tcpstream<>0 Then tcpstring$=ReadString(tcpstream) For i=1 To Len(tcpstring) DebugLog Asc(Mid(tcpstring,i,1)) Next Exit EndIf Until KeyHit(1) CloseTCPServer tcpserver EndIf Die Methode mit String hab ich übrigens deshalb gewählt, weil es wesentlich Netzwerkschonender und einfach ist, als jedes Byte einzeln zu senden. Außerdem hatte ich das schon probiert... Der Empfang brach ebenfalls nach dem ersten Byte ab. Woran liegt das? |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] ;Sender Reader=ReadFile("Alien.png") tcpstream=OpenTCPStream("192.168.20.2",7999) If tcpstream Then Repeat tcpstring$=tcpstring$+Chr(ReadByte(Reader)) ;<--- hast das $ vergessen ;) Until Eof(Reader) WriteString tcpstream,tcpstring$ ;<-- hier nochmal tcpstring$="" ;<-- und hier auch CloseTCPStream tcpstream$ ;<-- hier schonwieder. CloseFile Reader EndIf |
||
Starfare: Worklog, Website (download) |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ich mich jetzt irre, löscht bitte meinen Account wegen überirdischer Inkompetenz ![]() Man muss das $ doch nur bei der ersten Deklaration dazuschreiben, danach weiß das Blitz sozusagen schon. Ich weiß, dass es mit übersichtlicher und "schöner" wär, aber nicht falsch, oder? |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Von der Benutzung von ReadString und WriteString würde ich abraten. Schon allein, weil es in deinem Fall keinen Sinn macht.
Schick doch einfach immer 4 Byte rüber per WriteInt und ReadInt. Wenn du noch mehr gleichzeitig verschicken willst, nutze Banks und ql:WriteBytes / ql:ReadBytes. Achja: Bei dem $ hast du recht. Blitz begnügt sich, wenn man es bei der ersten Verwendung hinschreibt. |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit Int geht mein Testprogramm recht gut, danke.
Leider tauchten danach folgende Probleme auf: Ich bau das in ein größeres Programm ein und plötzlich krieg ich keinen TCP-Stream mehr zustande? (OpenTCPStream ergibt 0) Der Port wird zumindest von meinem Prog nicht belegt und vorhin funktionierte er. und außerdem braucht TCP doch nen Header von 22 Byte oder so. Dh ich würde für 4 Byte Daten 26 Byte schicken? Ein grobes Missverhältnis, oder? |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja vertippt hast du dich in deinem Code trotzdem. Und es ist auch ein schlechter Stil das $ wegzulassen, finde ich. | ||
Starfare: Worklog, Website (download) |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Darf ich mal ne etwas direkte Frage stellen?
Mein Fehler war genauso dumm wie simpel. ![]() Warum seid ihr da nicht draufgekommen? Wollt ihr mir nicht helfen oder könnt ihr es nicht? Ich mein das ist nicht die erste Frage, die hier nicht zu meiner Zufriedenheit beantwortet wurde. Aufklärung brachte nun das englische Forum, in dem man nicht lang um den heißen Brei herumredet von wegen Forumregeln, Umgangston, wo man was zu posten hat, usw. Die erste Antwort (2-zeilig) hat den Nagel auf dem Kopf getroffen, und ihr könnt mir das in 2 Tagen nicht sagen bzw auch nur irgendwelche Tipps oder Ratschläge geben? Achja, der Fehler war, dass ich die IP als Int angegeben hab, TCP wills ja als String. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Rechtschreibefehler sind der einzige typus fehler den man nicht einfach sieht weil das menschliche Hirn da ziemlich erbärmlich ist.
Deswegen habe auch verschiedene Leute auf BM gewechselt, dort kann man eine Variablendeklaration erzwingen statt sich 2 Tage lang zu fragen warum irgend ein Mist nicht geht. Die einzige Möglichkeit da normalerweise drauf zu kommen bei grösserem Source, ist mit Testausgaben überall um zu überwachen wo etwas schief läuft ... oder indem man im Debugmodus durchstept. Sowohl als auch ist allerdings deine Sache nicht unsere. Wir versuchen dir hier zu helfen soweit uns möglich, aber wir sehen nicht alles. Im Debugmodus mit durchstepen hättest du den Fehler aber eigentlich finden können. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Willst du uns verarschen?
Du beschuldigst uns einen Fehler nicht gefunden zu haben, den wir nicht finden konnten, weil du keinerlei Code gezeigt hast. Hinzu kommt, dass es ein Fehler ist, den du im hier angegebenen, älteren Code nicht gemacht hast. Denn dort oben steht die IP korrekt als String drin. Anderes ausgedrückt: Du redest diesen Portal hier madig, weil du zu doof bist ne korrekte Fehlerbeschreibung abzuliefern? Raus hier! Anmerkung: Das hier spiegelt meine Meinung als Person wieder. Nicht als Admin. Ich werde ihn weder bannen noch verwarnen. Dafür werde ich ihn zukünftig gering schätzen... ![]() Ein wütender D2006 |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jetzt sind wir wieder beim leidigen Thema ![]() Anstatt hier irgendwas nützliches zu schreiben, schimpfen sogar die Mods los. Hey, D2006, halt dich mal an deine eigenen Vorschriften und achte auf deinen Ton. (auch wenn du das alles nicht als Admin geschrieben hast...) Zitat: Raus hier!
Wie du willst. Find ich extrem schad, dass man hier nur Streiterein erlebt, aber was solls. Wenn ich noch weiter den Mund aufmache, haut ihr mich raus, da geh ich lieber "freiwillig". Und bevor hier noch einige mehr losschimpfen: Ja, ich hab nen alten Code hier drin... sry, aber jetzt is eh schon wurscht. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Eingeproggt: wenn du ein problem hast dann zeig bitte künftig auch den wirklichen Source zum jeweiligen Zeitpunkt. Es hilft wenig wenn man von Source ausgeht der garnix mehr mit der Realität zu tun hat. Das würde man dann als sinnfreies Posting einstufen müssen, weil es niemandem hilft sondern nur zu ratespielen und zorn führt wie der thread hier leider zeigt ...
drum keep cool people closed. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mir bleibt nur ein Kopfschütteln.
Jetzt ist die Administration also schlecht weil Du es nicht gebacken kriegst deine Frage beantwortbar zu stellen? Noch dazu kommst Du extremst fordernd daher. Wir alle tun das hier unentgeltlich in unserer Freizeit, also was erwartest Du ? Wenn Du bereit bist mir 25€ Brutto die Stunde abzudrücken und in der Lage bist Deine Problemstellungen vernünftig zu formulieren UND alles relevante Material abzugeben, DANN kannst Du von mir eine Lösung erwarten und fordern, aber auch nur dann. Alles andere hier - von jedem einzelnen- ist GOODWILL, und ich werde mir sicherlich zu nichts hier einen derben Kopf machen wenn ich das nicht möchte. Wir helfen hier seit Jahren so gut wir können, umsonst und fast jeden Tag, aber wir sind sicher nicht eure Debugger-Sklaven. Auch wenn D2006 hart reagiert hat, denke ich es war angemessen. Wieso? Weil du zuerst in die Offensive gegangen bist, indem Du uns Unfähigkeit und Unlust unterstellst. Dabei solltest Du Dir wirklich nochmal auf der Zunge zergehen lassen WAS Du getan hast: Du rufst bei deinem Mechaniker an und sagst Dein Auto ist kaputt, beschreibst knapp einen Fehler aber gibst nicht das Auto zur Reparatur. Statt dessen hast Du ihm 2 Wochen vorher ein Bild von einem ANDEREN Fahrzeug geschickt und erwartest nun dass er den Fehler blind und auf Entfernung korrigiert. Gratuliere zu dieser Weitsicht. Das Deine Anfrage auf bb.com so rasch und korrekt beantwortet wurde lag schlicht daran dass sie einfach beantwortet werden KONNTE - denn dort hast du ja den korrekten Code angegeben. Bevor Du also hier andere verdammst und wieder einmal das böse Forum schuld ist solltest Du Dir an die eigene Nase greifen. Denn was Du hier tust ist andere den Unmut über DEINEN Mist spüren zu lassen - da hast Du dir selbst ein schönes Süppchen 'eingeproggt'. Ich vermute aber es wird gehen wie immer: die eigenen Fehler sind nicht existent, also muss ja jemand anders schuld sein, nicht wahr? Gut, so sei es. Schieb Deinen Groll auf uns. Ehrlich gesagt interessiert mich das nicht die Bohne, denn User die so ignorant und fordernd sind wie Du sind vielleicht wirklich woanders besser aufgehoben. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group