BNetEx
Übersicht

Gehe zu Seite 1, 2, 3 ... 11, 12, 13 Weiter
![]() |
VertexBetreff: BNetEx |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() Netzwerkmodul für Windows, Linux und MacOS Super Strict Objekt-orientiert Unterstützung für UDP und TCP Gepufferte Datenpakete Domain to IP, IP to Domain Beta: ICMP Ping, Netzwerkadapter-Informationen, Broadcasting Deutsche Hilfedatei Beispiele sind enthalten Open Source Einfaches Interface Aktuelle Version BNetEx wird auf GitHub gehostet: https://github.com/oliverskawronek/bnetex.mod Ältere Versionen http://vertex.dreamfall.at/bnet/bnetex170beta2.zip http://vertex.dreamfall.at/bnet/bnetex170beta.zip http://vertex.dreamfall.at/bnet/bnetex166.zip http://vertex.dreamfall.at/bnet/bnetex165.zip http://vertex.dreamfall.at/bnet/bnetex164.zip http://vertex.dreamfall.at/bnet/bnetex163.zip http://vertex.dreamfall.at/bnet/bnetex162.zip http://vertex.dreamfall.at/bnet/bnetex161.zip Für MacOS Benutzer Die stabile Version v1.66 beinhaltet einen Fehler für das Betriebssystem MacOS. Dies kann behoben werden, in dem ihr die bnetex.bmx Datei öffnet, zur Zeile 73 springt und Code: [AUSKLAPPEN] ?MacOS
Const FIONREAD : Int = $4004667F Const SOL_SOCKET_ : Int = 1 ' Not sure! Const SO_SNDBUF_ : Short = 7 ' Not sure! Const SO_RCVBUF_ : Short = 8 ' Not sure! durch Code: [AUSKLAPPEN] ?MacOS
Const FIONREAD : Int = $4004667F Const SOL_SOCKET_ : Int = $FFFF Const SO_SNDBUF_ : Short = $1001 Const SO_RCVBUF_ : Short = $1002 ersetzt. |
||
- Zuletzt bearbeitet von Vertex am Mi, Sep 09, 2015 10:25, insgesamt 15-mal bearbeitet
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
Keep up the good work.
EDIT: @rema, hab dir ne pn geschrieben. Schau mal bitte nach ![]() |
||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
- Zuletzt bearbeitet von regaa am Mo, Aug 29, 2005 23:24, insgesamt einmal bearbeitet
![]() |
rema |
![]() Antworten mit Zitat ![]() |
---|---|---|
Finde ich super das du es oop machst. Es hat sehr viele Vorteile, vorallem gibts dann kein Spagetticode mehr.
Bin schon auf weitere Updates gespannt. |
||
Inkubus |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi habe etwas entdeckt im bmax.com Forum:
http://www.blitzmax.com/Commun...opic=50093 Vielleicht hilft es dir ja. Gruß, Tim |
||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
rema: Danke
Inkubus: Jup, den Link kannte ich schon. Bringt bei TSockStream jedoch nicht viel. Habe jetzt noch erlaubt, das man bei SetLocalPort eine 0 angeben kann, so dass das Betriebssystem autom. nach einem freien Port sucht. Diesen könnt ihr euch mit GetLocalPort zurück geben lassen. Weiterhin gibt es jetzt auch ein ReadTimeout mit SetReadTimeout. Ob ein WriteTimout Sinn macht, muss ich mal schauen. Naja ich konnte jetzt das Problem mit dem Lesen genauer eingrenzen. Wenn der Socket 14 Byte empfangen hat, jedoch ReadLine immer nur 1 Byte einliest via recvfrom, dann tritt dieser Fehler WSAEMSGSIZE auf. Lese ich z. B. in eine Bank mit genau 14 Byte größe aus, gibt es keine Probleme, auch wenn die Bank größer als 14 Byte ist. Naja hier der Code: Code: [AUSKLAPPEN] editiert
mfg olli |
||
vertex.dreamfall.at | GitHub |
- Zuletzt bearbeitet von Vertex am Fr, Sep 02, 2005 23:25, insgesamt einmal bearbeitet
Inkubus |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Habe glaube ich ein Fehler entdeckt
Code: [AUSKLAPPEN] Method Eof:Int()
Local Read:Int ' If socket does not exist If Self.Socket = INVALID_SOCKET_ Then Return True <---- DADADADA Else ' Data can read? Read = Self.Socket If (select_(1, Varptr(Read), 0, Null, 0, Null, Self.ReadTimeout) .. = SOCKET_ERROR_) Or (Self.ReadAvail() = 0) Then Return True Else Return False EndIf EndIf End Method Bessere wäre es wenn man -1 zurückt gibt oder False, weil wenn der Socket nicht Okay ist würde man immer ein True bekommen. Und somit probieren von der Stream zu lessen. |
||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eof = End Of File. Wenn Eof = True, dann kann vom Socket nciht gelesen werden.
mfg olli |
||
vertex.dreamfall.at | GitHub |
InkubusBetreff: Sorry |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mist war ein denk Fehler.
Hättest du vielleicht noch ein Beispiel zum empfangen ? |
||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Global Stream:TUDPStream
Stream = TUDPStream.Create() Stream.SetLocalPort(1234) While Not KeyDown(KEY_ESCAPE) If Stream.ReadAvail() Then While Not Stream.Eof() Print ">"+Stream.ReadLine() Wend Stream.SetRemoteIP(Stream.GetMessageIP()) Stream.SetRemotePort(Stream.GetMessagePort()) Stream.WriteLine("OK") EndIf Wend Stream.Close() End So sollte es später mal funktionieren. Das ReadAvail hätte man sich sparen können, da es Bestandteil von Eof ist, sieht aber besser aus ![]() GetMessageIP und GetMessagePort geben die IP und den Port des Senders der letzten empfangenen Nachricht zurück. Es wird also ein "OK" zurückgesendet ![]() mfg olli |
||
vertex.dreamfall.at | GitHub |
- Zuletzt bearbeitet von Vertex am Sa, Sep 03, 2005 16:56, insgesamt einmal bearbeitet
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
hm, sage mal, wird es eine Möglichkeit geben, 1. die Netzwerk karte zu wählen,
2. Modem IP herrauszufinden? |
||
between angels and insects |
Inkubus |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Vertex habe jetzt mal bank eingefügt zum buffern.
Aber jetzt habe ich ein neues Problem, das nur bei ReadLine die Methode Read aufgerufen wird.... Code: [AUSKLAPPEN] edit |
||
- Zuletzt bearbeitet von Inkubus am Mi, Okt 26, 2005 0:19, insgesamt einmal bearbeitet
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Jan_: Die Netzwerkkarte kann man bei BerkeleySockets nicht wählen. Wäre ja auch OS abhängig. Die ModemIP heraus zu bekommen wird genauso wie bei BlitzBasic gehen. Also über HostIP (kommt noch in TNetwork rein) Inkubus: Ich habe deine Idee mal aufgegriffen, jedoch nicht mit Banks sondern direkt mit allokierten Speicherbereichen. Wäre nett, wenn du dein langen Code ebenfalls editieren könntest, damit der Thread nicht unnötig lang wird. Wie ist dein richtiger Name, oder soll ich Inkubus stehen lassen? Code: [AUSKLAPPEN] editiert
Also die Daten zum schreiben/lesen werden vorher gepuffert. Die Puffer sind jeweils 1024 Byte groß(möp, hätte ich über ne Konstante vllt. regeln sollen). Eine Nachricht muss vorher mit RecvMsg empfangen werden, und kann erst DANACH mit ReadLine usw. ausgewertet werden. Das selbe gilt fürs senden einer nachricht. Erst die Nachricht mit WriteLine usw. schreiben, und dann Senden mit SendMsg. Beispiel zum senden: Code: [AUSKLAPPEN] Strict
Framework Pub.BNetEx Global Stream:TUDPStream Stream = TUDPStream.Create() Stream.SetLocalPort(1234) Stream.SetRemoteIP(TNetwork.IntIP("127.0.0.1")) Stream.SetRemotePort(4321) Stream.WriteLine("Hello World!") Stream.SendMsg() Stream.Close() Beispiel zum empfangen: Code: [AUSKLAPPEN] Strict
Framework Pub.BNetEx Import Brl.StandardIO Import Brl.System Global Stream:TUDPStream Stream = TUDPStream.Create() Stream.SetLocalPort(4321) While Not KeyDown(KEY_ESCAPE) If Stream.RecvMsg() Then Print "Message:" Print " - IP: "+TNetwork.DottedIP(Stream.GetMsgIP()) Print " - Port: "+Stream.GetMsgPort() While Not Stream.Eof() Print ">"+Stream.ReadLine() Wend EndIf Wend Stream.Close() Wohlgemerkt ein UDPStream kann Senden UND Empfangen! Es ist nciht nötig 2 Streams zu erstellen. Naja mal schauen, bei dem kleinen Modul werde ich vllt. mich mal dazu überwinden, und BBDoc für die Doku zu nehmen. mfg olli |
||
vertex.dreamfall.at | GitHub |
- Zuletzt bearbeitet von Vertex am Sa, Sep 03, 2005 16:54, insgesamt 2-mal bearbeitet
![]() |
Ninja |
![]() Antworten mit Zitat ![]() |
---|---|---|
es kommt ein error beim compilieren desmoduls ![]() |
||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der wäre? ![]() Also für die, die nicht wissen, wie man ein Modul compiliert: Im Ordner D:\BlitzMax\mod\pub.mod (der Blitzmax Pfad hängt davon ab, wo ihr BMax installiert habt)ein neuen ordner namens bnetex.mod erstellen, und in diesem eine neue Datei namens bnetex.bmx erstellen. bnetex.bmx hat folgenden Inhalt: Code: [AUSKLAPPEN] editiert
Jetzt im Menü "Program" auf Build Modules klicken. So ich habe mal jetzt noch TTCPStream eingeführt. Funzt aber noch nicht! mfg olli |
||
vertex.dreamfall.at | GitHub |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, TCP scheint nun zu gehen:
Code: [AUSKLAPPEN] Siehe neue Version
Server Beispiel: Code: [AUSKLAPPEN] Strict
Framework Pub.BNetEx Import Brl.StandardIO Import Brl.System Import Brl.LinkedList Global Stream : TTCPStream Global ClientList : TList Global Client : TTCPStream Stream = TTCPStream.Create() Stream.SetLocalPort(80) Stream.Listen() Stream.SetTimeouts(1000, 1000, 1000) ClientList = CreateList() While Not KeyDown(KEY_ESCAPE) Client = Stream.Accept() If Client Then Print( "New Client: ") Print( " - IP: "+TNetwork.StringIP(Client.GetLocalIP())) Print( " - Port: "+Client.GetLocalPort()) ClientList.AddLast(Client) EndIf For Client = EachIn ClientList If Client.Eof() = -1 Then Print( "Client has disconnected") Print( " - IP: "+TNetwork.StringIP(Client.GetLocalIP())) ClientList.Remove(Client) Continue EndIf While Not Client.Eof() Print( ">"+Client.ReadLine()) Wend Next Wend Stream.Close() Client Beispiel: Code: [AUSKLAPPEN] Strict
Framework Pub.BNetEx Import Brl.StandardIO Import Brl.System Global Stream : TTCPStream Stream = TTCPStream.Create() Stream.SetLocalPort(0) ' Need TNetwork.HostIP("google.de")! Stream.SetRemoteIP(TNetwork.IntIP("216.239.39.104")) Stream.SetRemotePort(80) Stream.Connect() Stream.SetTimeouts(1000, 1000) Stream.WriteLine("GET http://google.de/ HTTP/1.1") Stream.WriteLine("") Stream.WriteLine("") While Stream.Eof() ; Wend While Not Stream.Eof() Print Stream.ReadLine() Wend Stream.Close() mfg olli |
||
vertex.dreamfall.at | GitHub |
- Zuletzt bearbeitet von Vertex am Sa, Okt 29, 2005 16:00, insgesamt einmal bearbeitet
![]() |
Ninja |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm.. oft kommen nachrichten garnicht an sorry aber so geht das nicht ![]() Mit einfachen strings hin und her schicken gehts ja aber wenns zur sache geht ist das nutzlos :/ sonst toll... |
||
![]() |
Ninja |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn ich z.b. das mache
Code: [AUSKLAPPEN] Stream.writebyte(2) 'IP Request Stream.SendMsg() Stream.writebyte(1) Stream.writeint(Len(name(1))) Stream.writeString(name(1)) Stream.SendMsg() kommt immer das mit dem 2er byte nicht an. :/ |
||
![]() |
Ninja |
![]() Antworten mit Zitat ![]() |
---|---|---|
Falscher alarm! hatte eine if bedingung falsch gesetzt tut mir sehr leid! | ||
IonPainter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie siehts denn jetzt mit dem Empfangen aus, insbesondere im UDP Bereich? Sonst noch irgendwelche Bugs bekannt?
achja: Good Work Vertex, wie immer *daumenhoch* |
||
![]() |
Ninja |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei mir funktioniert es bis jetzt super, gute arbeit vertex! ![]() |
||
Spiele & Security Tools
www.SelfSoft.org |
Gehe zu Seite 1, 2, 3 ... 11, 12, 13 Weiter
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group