Blitz kompatibel mit C-Server?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Ticha

Betreff: Blitz kompatibel mit C-Server?

BeitragDi, Dez 26, 2006 3:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich hab mal was versucht. Ich habe einen Linux-Multi-Client-Crossover-Server in C hier vor mir stehen.

Mein anliegen war es, den server via TCP oder UDP anszusprechen, natürlich über Blitz.

Dazu hab ich mir dem netten Rob seine Site zu rate genommen und mir mal seine Befehle für Netzwerk Verbindungen angeschaut.

Das connecten per TCP auf den Server funktioniert. Nur werden die Strings, die ich schicke nicht angezeigt. Der Server erkennt nur, dass der client von Blitz connected hat und dass er wieder deconnected hat.
Obwohl ich streams schicke, erkennt er nichts.


per UDP konnte ich nicht versuchen, da der liebe rob vergessen hat eine Syntax zu geben, wenn man keine IP empfangen hat, und wenn ich versuche diese Manuel einzugeben gibt mir Blitz dicken Error Very Happy

hier mal der Codeschnipsel von Rob

Code: [AUSKLAPPEN]
; Die Streams erstellen
sende_stream = CreateUDPStream(8001)
empfangs_stream = CreateUDPStream(8000)

; Eine Nachricht empfangen
IP_Adresse = RecvUdpMsg(empfangs_stream)
; Wenn einen Nachricht empfangen wurde ein Byte auslesen
If IP_Adresse <> 0 Then byte = ReadByte(empfangs_stream)


; Ein Byte in den Sendestream schreiben
WriteByte(sende_stream, 23)
; Den Stream an die IP Adresse und den Port desjenigen senden von dem man die Nachricht empfangen hat
SendUdpMsg sende_stream, IP_Adresse


Mein anliegen wäre, es die Ip manuel eingeben zu können.


Aber nun zu meiner Hauptfrage:

Weiss einer woran das liegen könnte? Hat schon jmd ein ähnliches oder aber dasselbe problem gehabt?

Kann mir jmd helfen?

EDIT:: Könnte es vlt an der Windows - Linux Komunikation leigen? Wohl eher nicht oder?
 

Steve0

BeitragDi, Dez 26, 2006 10:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube du musst die IP-Adresse von der "normalen" Form (z.B. 192.168.0.1) in einen Integer umwandeln.
Im Forum dürfte es einige Funktionen zum Umwandeln geben. (Von der Integer Form nach "normaler" Form gibts die blitzeigene Funktion DottedIP).

Zu deinem anderen Problem. Ich denke nicht das es etwas mit Linux-Windows zu tun hat solange beide Programme wissen wie der andere Daten empfängt bzw. sendet. Möglicherweiße sendest du auch an einen falschen Port.
Pixelgenaue 2D SingleSurface Engine!!!

Eingeproggt

BeitragDi, Dez 26, 2006 12:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab auch meine Probeme mit udp, kriegs seit bald einer Woche nicht hin, aber in einem Punkt kann ich dir helfen:

Code: [AUSKLAPPEN]

Function IntegerIP(IP$)
    a1=Int(Left(IP,Instr(IP,".")-1)):IP$=Right(IP,Len(IP)-Instr(IP,"."))
    a2=Int(Left(IP,Instr(IP,".")-1)):IP$=Right(IP,Len(IP)-Instr(IP,"."))
    a3=Int(Left(IP,Instr(IP,".")-1)):IP$=Right(IP,Len(IP)-Instr(IP,"."))
    a4=Int(IP)
    Return (a1 Shl 24)+(a2 Shl 16)+(a3 Shl 8 )+a4
End Function


(Die Funktion hab ich eh hier irgendow im Forum gefunden, in einem älteren Eintrag)
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Lunatix

BeitragDi, Dez 26, 2006 12:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Die funktion steht auch auf TheShadows blitzhifle seite (www.blitzbase.de)
Sehr gute seite, benutze ich heute noch wenn ich mal ab und zu was nachschauen muss... (ab und zu^^)

Nja, Ticha, hast du schon mal versucht nur Bytes zu schicken ? Ist jetzt halt nur so ein gedanke oO
und ans ende evtl. noch Chr(13)+Chr(10) , das ist ein Absatz in Bytes.
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
 

Ticha

BeitragDi, Dez 26, 2006 17:23
Antworten mit Zitat
Benutzer-Profile anzeigen
also das senden per UDP hab ich jetzt hinbekommen... Blitzseitig, jedoch macht der C Server gar keine Reaktion darauf. Bei TCP sagt er wenigstens, dass etwas angekommen ist, bzw das sich etwas connectetd hat und wenn sich der Blitz-Client beendet stürzt der Server ab da er glaubt ständig neue anchrichten geschickt zu bekommen und schreibt konstant "neue nachticht:" :-I

@SteveO
Am port liegt es nicht. Wenn ich einen falschen port eingebe, gibt er mir ja direkt einen error aus, auf BlitzSeite.


ivh mach mir erstal kaffee
 

Ticha

BeitragDi, Dez 26, 2006 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
ok also ich habe EINEN fehler gefunden.

wenn ich per TCP die werte des Streams als String verschicke, bekommt der server nichts an. Doch wenn ich sie als Integer verschicke, gibt der server diese dann auch ordnungsgemäss aus.

hmm... also einen chat werde ich wohl nicht schreiben können... es sei denn binär Very HappyVery Happy Very Happy

aber koordinaten wird er dann doch noch veschicken können. trotzdem würde ich doch gerne wissen wie ich das ändern kann ?

EDIT::

nachdem ich dann mal auf der Fehlersuche war, hab ich herausgefeunden, dass im Blitz eine kleine sperre ist. Nänlich an der Readfunktion. Dort blockiert er. Ich versuche das mal auszumertzen.
 

Dreamora

BeitragDi, Dez 26, 2006 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist net. TCP ist blocking in Blitz, das kannst du nur mit einer DLL (K-Netlib siehe Newsboard) umgehen.

In Blitz ist einzig und allein UDP non-blocking (ok DP ist nicht blocking aber prinzipiell für nix gut. MS hats net umsonst vor jahren wieder verworfen)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Ticha

BeitragDi, Dez 26, 2006 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
ohjaaaa... das is genau das was ich brauche Very Happy danke Very Happy

und ich dachte es sei so einfach wie auf der Robsite beschrieben Sad

naja, muss man sich auch noch da rein arbeiten Very Happy

Kurze frage, inlcude ich die Lib genauso wie in C (#include <K-Netlib.h>) oder anders?

was mich aber verwundert... wenn TCp geblockt ist, warum kann ich dann sachen versenden?

gibt es irgendwo ein schönes turorial für die lib ?

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group