Seite 1 von 1

OpenNetworkConnection geht nicht

Verfasst: 11.03.2006 00:38
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

Verfasst: 11.03.2006 01:01
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.

Verfasst: 11.03.2006 01:03
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...

Verfasst: 11.03.2006 01:06
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

Verfasst: 11.03.2006 01:08
von Macros
Hast du ne Firewall laufen?
Das würde einiges erklären.

Verfasst: 11.03.2006 01:26
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

Verfasst: 11.03.2006 10:58
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.

Verfasst: 11.03.2006 19:43
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