BNetEx
Übersicht

Gehe zu Seite Zurück 1, 2, 3, 4 ... 11, 12, 13 Weiter
gamble |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, ich benutze noch deins, da ich seit dem Update keine Module mehr kompilieren kann.
Edit: Ich werd aus BMax nicht schlau, jetzt kann ich das Modul doch kompilieren. Wie auch immer, funktionieren tut der Quellcode immer noch nicht. Funktioniert er bei Dir? |
||
![]() |
Hummelpups |
![]() Antworten mit Zitat ![]() |
---|---|---|
Lol,
ja, wie vertex etwas weiter oben beschrieb, hatte das alte Modul bei 2 Befehlen eine Macke. Die sind nun wohl behoben. Ob es funzt kann ich im moment nicht sagen, da ich gerade selber viel programmieren muss damit mein zwischenprojekt weiter kommt. Sry. IMurDOOM |
||
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Arg, ja, das ist ein Bug von BNetEx...
Die Nachricht ist 1044 Byte groß, der Buffer aber nur 1024 Byte. Werde mich gleich drum kümmern. mfg olli |
||
vertex.dreamfall.at | GitHub |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich dachte, ich könnte den internen Buffer auf 1024 Byte reduzieren mit
Code: [AUSKLAPPEN] Global Size : Int
Size = 1024 setsockopt_(Socket, SOL_SOCKET, SO_RCVBUF, Varptr(Size), 4) Aber das hat anscheinend keine Auswirkungen. Dann habe ich mir mal: Code: [AUSKLAPPEN] Global Size : Int
Global Length : Int Length = 4 getsockopt(Socket, SOL_SOCKET, SO_MAX_MSG_SIZE, Varptr(Size), Varptr(Length)) ausgeben lassen, und stellte fest, dass der interne Empfangsbuffer 65507 Byte groß ist. Ich weiß nicht, ob 64 KByte für jeden UDP-Socket zu erstellen, gerechtfertigt sind. Aber ich pers. gehe davon aus, das man max. 2 UDP Sockets verwendet. Das wären 128 KB verschwendeter Arbeitsspeicher. Was haltet ihr davon, bzw. vllt hat ja jemand einen Lösungsansatz. Das ganze betrifft übrigens NICHT TCP Streams! mfg olli |
||
vertex.dreamfall.at | GitHub |
![]() |
Hummelpups |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja,
ich meine mal gehört zu haben das die größte UDP Paket größe 64kB ist. Das ist ne ganze Menge, wenn man überlegt 65.000 Chars darin zu speichern...? Würde es nicht die hälfte auch tun? IMurDOOM |
||
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ein UDP Datenpacket ist so aufgebaut:
Code: [AUSKLAPPEN] 0 8 16 24 31
+------------+------------+ | Quell-Port | Ziel-Port | +------------+------------+ | Länge | Prüfsumme | +------------+------------+ | Daten | | ... | +-------------------------+ Die Länge gibt die Größe des UDP-Packets inkl. Header an. Der Header nimmt 8 Byte ein. Also ist die Maximallänge des Payloads 2^16 - 8 - 1 = 65527 Byte. Wie gesagt, ich habe schon versucht den Receivebuffer zu verkleinern, hat aber eben keine Auswirkung ![]() mfg olli |
||
vertex.dreamfall.at | GitHub |
klepto2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Vertex, das problem mit deinen Docs hat sich gelöst. Mit der neuen Version von bbdoc werden auch Types und Methoden angezeigt. Allerdings brauchts dafür eine kleine Änderung, damit bbdoc überhaupt eine Hilfe erstellt.
Code: [AUSKLAPPEN] REM bbdoc: BNetEx Module EndRem Module Pub.BNetEx der Name , den die IDE in ihrem Baum anzeigt, muss nun extra mit angegeben werden. |
||
Matrix Screensaver
Console Modul für BlitzMax KLPacker Modul für BlitzMax HomePage : http://www.brsoftware.de.vu |
![]() |
Hummelpups |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist dieses Projekt inoffiziell abgeschlossen?
IMurDOOM |
||
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus |
![]() |
Hummelpups |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab da mal ein Problem mit BNetEx, weiß nicht genau ob es an
meinem zur zeitigem Download liegt das so die Timeouts überschritten werden, aber dieser Quellcode erzeugt bei mir unterschiedliche ausgaben. Habe es mit HTTP 1.1 und 1.0 ausprobiert. Ich hoffe das es an meinem Quelltext liegt. Guckt euch den mal an ^^ Code: [AUSKLAPPEN] Global stream:TTCPStream
stream:TTCPStream=New TTCPStream stream.init() time=MilliSecs() While Not KeyHit(1) If MilliSecs()>=time+5000 Then time=MilliSecs() Print get_hits() End If Wend stream.close Function get_hits() stream.setlocalport(30000) stream.setremoteip(TNetwork.GetHostIP("blitzhelp.net")) stream.setremoteport(80) stream.connect() stream.writeline("GET /includes/hits.php HTTP/1.0") stream.writeline("Host: blitzhelp.net") stream.writeline("") stream.sendmsg() Repeat Until stream.recvavail() stream.recvmsg() While Not stream.eof() txt:String=stream.readline() For steps=0 To Len(txt)-3 If Mid(txt,steps,3)="<p>" Then 'stream.close() 'stream=Null Return Int(Mid(txt,steps+3,-1)) End If Next Wend End Function Ich hoffe ihr verzeiht mir das ich hier mal nicht im strict mode programmiert hab ^^ IMurDOOM |
||
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstens: SetLocalPort muss nicht mit 30000 gesetzt werden. Benutze SetLocalPort() (hier ist Port=0), dann lässt du BNetEx einen freien Port suchen.
Zweitens: BNetEx ist in jetziger Version auf 1024 Byte Datenpacketgröße beschränkt(fürs seden und empfangen). Ich geh davon aus, dass das Dokument größer ist. Wenn interesse besteht, dann werde ich dies noch beheben, wie es bereits in BNet behoben wurde. Drittens: Benutze TCPTimeouts, um den Benutzer nicht mit 10 Sekunden Standard-Receivetimeout zu belasten. Viertens: Bei HTTP 1.0 wird nach jedem senden des angeforderten Dokuments die Verbindung getrennt. Dennoch sollte man den Stream schließen, um zu verhindern, dass der verwendete Port nicht freigegeben wird. mfg olli |
||
vertex.dreamfall.at | GitHub |
![]() |
Hummelpups |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vertex hat Folgendes geschrieben: Erstens: SetLocalPort muss nicht mit 30000 gesetzt werden. Benutze SetLocalPort() (hier ist Port=0), dann lässt du BNetEx einen freien Port suchen.
Ja, soviel habe ich aus dem Modul und den Examples auch heraus gelesen ![]() Vertex hat Folgendes geschrieben: Zweitens: BNetEx ist in jetziger Version auf 1024 Byte Datenpacketgröße beschränkt(fürs seden und empfangen). Ich geh davon aus, dass das Dokument größer ist. Wenn interesse besteht, dann werde ich dies noch beheben, wie es bereits in BNet behoben wurde.
Interesse besteht, das momentane Paket ist ~250 byte groß, dürfte also keine Buffer Probleme geben. Vertex hat Folgendes geschrieben: Drittens: Benutze TCPTimeouts, um den Benutzer nicht mit 10 Sekunden Standard-Receivetimeout zu belasten.
Habe nun mal 0,5 Sekunden Timeouts verwendet Vertex hat Folgendes geschrieben: Viertens: Bei HTTP 1.0 wird nach jedem senden des angeforderten Dokuments die Verbindung getrennt. Dennoch sollte man den Stream schließen, um zu verhindern, dass der verwendete Port nicht freigegeben wird.
Okay, ich close nun den Stream nach jedem Transfer und initialisiere ihn bei jedem request neu. so funktioniert es wunderbar. Es wäre wirklich schön wenn du die Buffergröße verändern könntest ![]() Hier mal mein aktueller Code, nur so schnell dahingeschludert ohne strict usw. muss gleich weg, dann lernen, Ümorgen ZwischenPr. ;( Code: [AUSKLAPPEN] Global stream:TTCPStream
stream:TTCPStream=New TTCPStream time=MilliSecs() While Not KeyHit(1) If MilliSecs()>=time+1000 Then time=MilliSecs() Print get_hits() End If Wend stream.close Function get_hits() stream.init stream.SetTimeouts(500,500,500) stream.setremoteip(TNetwork.GetHostIP("blitzhelp.net")) stream.setremoteport(80) stream.connect stream.writeline("GET /includes/hits.php HTTP/1.1") stream.writeline("Host: blitzhelp.net") stream.writeline("") stream.sendmsg() Repeat incoming=stream.recvavail() Until incoming Print "Got: "+incoming stream.recvmsg() While Not stream.eof() txt:String=stream.readline() Print txt Wend stream.close End Function Herzlichen Dank vertex, du hast mir sehr geholfen ![]() IMurDOOM |
||
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://vertex.art-fx.org/bnetex162.zip
Damit kann man nun auch Packete senden, jenseits der 1KByte Marke. Bei meinem Test habe ich mal eine 3 MByte große Datei heruntergeladen. Hatte glaube ich, ca. 10 Sekunden gedauert. Die Datenpackete waren 4KByte groß. Hat sich also gelohnt. Dadurch das jedes Auslesen, Beschreiben, Senden und Empfangen eine neu allokierung der jeweiligen Sende- bzw. Empfangspuffer bewirkt, dürfte das jedoch etwas langsamer sein. Standardmäßig 1KByte Buffer einzuführen, die bei größeren Datenpacketen neu allokiert werden, wäre eine gute Idee, jedoch sehr aufwändig für mich zu realisieren. Es dürfte jetzt keine Fehler mehr geben, beim Versuch einer UDP-Nachricht > 1KByte zu empfangen. mfg olli |
||
vertex.dreamfall.at | GitHub |
bieglBetreff: Problem mit BnetEx |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
habe folgendes Problem mit bnetEx: Ich schreibe gerade ein Programm das 2 Verbindungen gleichzeitig hat. Einmal eine Verbindung zu einem Irc server (TCPClient) und einen Serverstream der den Port 23 ständig abhören soll (TCPServer). Das Problem: Lass ich Irc Verbidung alleine laufen und Kommentiere den Telnet server aus funktionierts. Lass ich die Irc Verbindung laufen und erstelle den Telnet server, lasse ihn aber nicht in der hauptschleife prüfen ob sich Clients connecten functionierts auch noch. Sobald ich aber In der AHuptschleife beides überprüfe also ob nachrichtem vom irc und oder von einem telnetclienten vorliegen kackt er ab ![]() Was kann das sein? Stören sich die beiden Verbindungen? Könnte es gehen wenn ich dem Telnet server sag das er nur überprüfen darf ob eine verbindung eines neuen clients vorliegt, wenn der ircserver gerade ncihts empängt oder sendet? mfg biegl |
||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was heißt hier genau abkacken?
Berkley-Sockets sind nicht solchen Einschränkungen unterzogen. DSL in der Schule ist zu langsam, als das ich dort mal was in Richtung Debugging-Module programmieren könnte(da ich MSDN o.ä. griffbereit brauche). Damit könnte man einen Logger basteln, der Fehler mit allen Ursachen ausgeben könnte. Alles andere ist aufweniges Rätzelraten. Wenn ich also nicht selber das Problem mal erleben darf, nützt bei mir keine Fehleranalyse. Weiter weis ich mal darauf hin, das die Beispiele im *.zip Arschiv nicht funktionieren, da sie noch aus alter Zeit stammen. mfg olli |
||
biegl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
OK Vertex vielleicht sagts dir jetzt mehr:
https://www.blitzforum.de/upload/code.php?show=32 Hab hier mal die relevanten Functionen und Codes aus menem Quellcode zusammen gestelllt und gepastet. An was kanns liegen? mfg biegl |
||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
So weit ist das auch i.O. Das einzige, was ich immer zu bemängeln hätte, wäre ReadLine. Aber das würde sich nur auf das anzeigen von den Zeilen beschränken.
Aus "Hello World\n" könnte nämlich BMax folgende Darstellung dann ausgeben: Hello World Das macht er dann, wenn nur Daten bis Hello ankommen. Dann ist nix weiter vorhanden, und er gibt dir Hello aus. Jetzt kommt das nächste Packet rein mit "World\n". Das wird dann als korrekte Zeile interpretiert. Hier liegt der einzige Nachteil des Bufferns. Man kann sich aber da eine kleine Methode selber schreiben, die ersteinmal prüft, ob \n schon vorhanden ist. Ansonsten hier die Debugfunktionen: Code: [AUSKLAPPEN] Extern "OS"
?Win32 NetError:Int() = "WSAGetLastError@0" ?Linux Global errno : Int ?MacOS Global errno : Int ' Keine Ahnung ob das geht!!!! ? End Extern ?Linux Function NetError:Int() Return errno End Function ?MacOS Function NetError:Int() Return errno End Function ? (könnte auch nur über Extern "linux" gehen!) Also, hinter dem Befehl immer mal ausgeben lassen, wo es abkackt. Dann diese Funktion selber analysieren, in dem man Debuglog NetError() immer hinter jede Socketfunktion (bei BNetEx zu erkennen, dass die Funktion klein geschrieben ist und einen _ Suffix benutzt). Dann muss man die Funktion unter MSDN eingeben, den Errorcode mal in wsock32.h(oder wie die heißt, ist aber bei DevC++ z. B. dabei) suchen und bei MSDN gucken, was die ursache ist. Wie gesagt, würde sich da ein Debugmodule von mir besser machen, der das automatisch macht. mfg olli |
||
![]() |
Wild-Storm |
![]() Antworten mit Zitat ![]() |
---|---|---|
404 | ||
Visit http://www.next-dimension.org
------------------------------------------------- Freeware Modelle, Texturen & Sounds: http://www.blitzforum.de/forum...hp?t=12875 |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm.... Kein 404?
Also bei mir geht der Download problemlos. |
||
![]() |
Wild-Storm |
![]() Antworten mit Zitat ![]() |
---|---|---|
bin ich blind oO
http://vertex.art-fx.org/bnetex162.zip der link geht doch wohl eindeutig nicht |
||
Visit http://www.next-dimension.org
------------------------------------------------- Freeware Modelle, Texturen & Sounds: http://www.blitzforum.de/forum...hp?t=12875 |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
wir wärs mit dem: http://vertex.art-fx.org/bnet/bnetex162.zip | ||
Gehe zu Seite Zurück 1, 2, 3, 4 ... 11, 12, 13 Weiter
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group