OpenNetworkConnection geht nicht

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Kyoko12
Beiträge: 45
Registriert: 22.11.2004 20:56

OpenNetworkConnection geht nicht

Beitrag von Kyoko12 »

Hallo!

Ich habe mal versucht, mir einen eigenen kleinen NetSend zu Programmieren. Dafür habe ich einfach einen Server und einen Client geschrieben. Der Server arbe3itet soweit ich beurteilen kann ohne Probleme, hier der Code:

Code: Alles auswählen

;;;Variablen
port = 73
own_ip_val = 0
own_ip_str$ = ""
own_host$ = ""
client_ip_val = 0
client_ip_str$ = ""
client_id = 0
event.l = 0
buffer = AllocateMemory(1024)
messege$ = ""
i = 1


;;;Inits
InitNetwork()


;;;ServerStart
CreateNetworkServer(port)


;;;Hauptschleife
Repeat
    event = NetworkServerEvent()
    If event
        client_id = NetworkClientID()
        Select event
            Case 0
                ;;;
            Case 1
                ;;;
            Case 2
                ReceiveNetworkData(client_id, buffer, 1024)
                MessageRequester("Nachricht", PeekS(buffer), 0)
            Case 3
                ;;;
            Case 4
                ;;;
        EndSelect
    EndIf
Until i = 0
Der Client soll nun, wenn der Befehl send in seine Konsole eingegeben worden ist, Abfragen, an wen udn welche Nachricht übermittelt werden soll. Das macht er auch noch. Aber dann kommt bei OpenNetworkConnection(empfaenger$, port) ein Fehler, den ich mir nicht erklären kann! Hier der Code:

Code: Alles auswählen

;;;Variablen
port = 73
own_ip_val = 0
own_ip_str$ = ""
own_host$ = ""
server_ip = 0
server_host$ = ""
connection_id = 0
event.l = 0
messege$ = ""
empfaenger$ = ""
befehl$ = ""


;;;Inits
InitNetwork()


;;;Konsole
OpenConsole()
ConsoleLocate(0, 0)


;;;Infos
own_host$ = Hostname()


;;;Hauptschleife
Repeat
Print("Befehl>")
befehl$ = Input()
If befehl$ = "send"
    PrintN("")
    Print("Empfaenger: ")
    empfaenger$ = Input()
    PrintN("")
    Print("Nachricht: ")
    messege$ = Input()
    PrintN("")
    connection_id = OpenNetworkConnection(empfaenger$, port)
    SendNetworkString(connection_id, "Nachricht von: " + own_host$ + ": " + messege$)
    CloseNetworkConnection(connection_id)
Else
    PrintN("")
EndIf
Until befehl$ = "exit"
Könnt ihr mir da weiterhelfen?? Ich bedanke mich schon mal im Vorraus für eure Hilfe, mit freundlichen Grüßen,
Maximilian Mayerl
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Bei mir funltioniert das Programm einwandfrei.

übrigens: ein Tipp
verwende statt

Code: Alles auswählen

ReceiveNetworkData(client_id, buffer, 1024)
                MessageRequester("Nachricht", PeekS(buffer), 0)

Code: Alles auswählen

message$=space(1024)
ReceiveNetworkData(client_id, @message$, 1024)
                MessageRequester("Nachricht", message$, 0)
denn wenn man jetzt an deinen Server/Client "test" sendet,
und danach "1",
gibt er beim 2. mal "1est" aus,
da der Rest von "test" noch nicht aus dem Speicher gelöscht wurde.
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag von real »

Bei mir (Version 3.94) kommt kein Fehler und das Programm funktioniert. Ich kann eine Nachricht schicken und die wird dann in einer MessageBox angezeigt...
Benutzeravatar
Kyoko12
Beiträge: 45
Registriert: 22.11.2004 20:56

Beitrag von Kyoko12 »

Also, ich verwende Die Version 3.92, und der Debugger sagt mir immer, Dconnection ID ist null...

hm...vllt. liegts an meinem computer...

auf jedne fall danek für eure Hilfe
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Hast du ne Firewall laufen?
Das würde einiges erklären.
Christi
Beiträge: 154
Registriert: 31.08.2004 14:17
Kontaktdaten:

Beitrag von Christi »

so wär das mit der Empfangsgeschichte meiner Meinung nach am besten:

Code: Alles auswählen

l = ReceiveNetworkData(client_id, buffer, 1024) 
If l > 0
  MessageRequester("Nachricht", PeekS(buffer, l), 0)
EndIf
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Du musst schon überprüfen ob OpenNetworkConnection() fehlschlägt.
Kann schließlich immer mal passieren (falsche IP oder so).
Da solltest du dich gegen sichern.
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
Kyoko12
Beiträge: 45
Registriert: 22.11.2004 20:56

Beitrag von Kyoko12 »

Ah, danke, das mit der FireWall wars!
Hab ganz vergessen, dass die auch Verbidungen filtert, die rein auf dem lokalen Rechner stattfinden!

mfg,
Kyoko12
Antworten