BNetEx
Übersicht BlitzMax, BlitzMax NG Codearchiv & ModuleGehe zu Seite 1, 2, 3 ... 11, 12, 13 Weiter
VertexBetreff: BNetEx |
Mo, Aug 29, 2005 23:00 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 |
Mo, Aug 29, 2005 23:20 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 |
Mo, Aug 29, 2005 23:23 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 |
Di, Aug 30, 2005 0:12 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 |
Di, Aug 30, 2005 17:54 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 |
Di, Aug 30, 2005 18:22 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 |
Di, Aug 30, 2005 18:26 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 |
Di, Aug 30, 2005 19:23 Antworten mit Zitat |
|
---|---|---|
Mist war ein denk Fehler.
Hättest du vielleicht noch ein Beispiel zum empfangen ? |
||
Vertex |
Di, Aug 30, 2005 20:11 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 |
Do, Sep 01, 2005 7:50 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 |
Do, Sep 01, 2005 14:35 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 |
Fr, Sep 02, 2005 23:36 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 |
Sa, Sep 03, 2005 12:30 Antworten mit Zitat |
|
---|---|---|
es kommt ein error beim compilieren desmoduls | ||
Vertex |
Sa, Sep 03, 2005 13:55 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 |
Sa, Sep 03, 2005 16:54 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 |
Sa, Sep 03, 2005 22:29 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 |
Sa, Sep 03, 2005 22:46 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 |
So, Sep 04, 2005 11:42 Antworten mit Zitat |
|
---|---|---|
Falscher alarm! hatte eine if bedingung falsch gesetzt tut mir sehr leid! | ||
IonPainter |
Mo, Sep 05, 2005 19:38 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 |
Mo, Sep 05, 2005 19:43 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 BlitzMax, BlitzMax NG Codearchiv & Module
Powered by phpBB © 2001 - 2006, phpBB Group