probleme mit internet "chat"
Übersicht

onkelz89Betreff: probleme mit internet "chat" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi
ich schreib erstma code auf dann wo die probleme sind Code: [AUSKLAPPEN] svrGame=CreateTCPServer(8080) If svrGame<>0 Then Print "Start erfolgreicht." Else Print "Start fehlerhaft" End End If While Not KeyHit(1) strStream=AcceptTCPStream(svrGame) If strStream Then nachricht$=ReadString$(strStream) Print nachricht$ EndIf If KeyHit(57) Then tex$=Input("") strmGame=OpenTCPStream("IP ADRESSE",8080) WriteString strmGame,tex$ EndIf Delay 1000 Wend so diese datei habe ich und ein freund und bei IP ADRESSE sind jeweils die anderen eingetragen also freunddatei mit meiner ip meine datei mit freundip er kann mir dinge schreiben ich ihm nicht da kommt memory access violation warum? bin amverzweifeln danke im vorraus |
||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
hm, du brauchst einen server und einen client...
der server erstellt den tcp server und macht acceptstream.... er sendet außerdem über den rückgabewert von accepttcpstream mit writeline nachrichten.. der client sendet mit opentcpstream nachrichten und empfängt sie auch so... |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja nur oben hab ich das doch nur das ich so gesehen 2 server und 2 clienten habe oder ? halt server und client in einem... wie würdest du das denn sonst machen? kannst ja oben den code als beispiel nehmen und daneben schreiben was wo hin/weg muss | ||
![]() |
Geeecko |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst die adresse von deinem freund abspeichern ![]() Dies ist aber leider nur für 2 benutzer (client+server) Code: [AUSKLAPPEN] svrGame=CreateTCPServer(8080) If svrGame<>0 Then Print "Start erfolgreicht." Else Print "Start fehlerhaft" End End If While Not KeyHit(1) strStream=AcceptTCPStream(svrGame) If strStream Then feund_adresse=strStream EndIf If KeyHit(57) Then tex$=Input("") WriteString freund_adresse,tex$ EndIf ;auselesen vopm freund if readavail(freund_adresse)>0 print readline(freund_adresse) endif Delay 1000 Wend Dieser Code ist leider nur für client+server, wenn du mehrere benutzen möchtest musst du dich mal mit types auseinandersetzen ![]() freund_ip ist sozusagen die ip adresse des freunden. des stream musst du nciht mehr öffnen, weil er sozusagen mit accepttcpstream geöffnet wurde ( ![]() ![]() Naja, habe ihn dort oben nicht getestet sollte aber funtzn ![]() mfg Gaia |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gaia hat Folgendes geschrieben: ...musst du dich mal mit types auseinandersetzen (dooofff)
Nein, sehr mächtig. Und mit einem Minimim an Lernbereitschaft zu verstehen. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi
danke für die antworten. hab den code getestet und aber jetzt kommt noch ein memory access ... und zwar in der zeile If ReadAvail(freund_adresse)>0 der debug sagt er (der stream) existiert nicht. hab das programm geöffnet alleine zuhaus. nur wenn ich es nicht offen lassen kann kann ja auch kein freund dazustoßen. zu der sache vonwegen das klappt nur mit einem server und einem client. das ist für mein projekt ausreichend. types kenn ich schon aber brauchs hier halt nich (soll kein chat werden wie normal wo mehrere reden will nur testen wie flüssig blitz das überhaupt macht) hoffe das ihr mich versteht |
||
![]() |
MaTrixCruiser |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da mein problem bissel so ähnlich ist dacht ich ma.. mach ichs mir hier rein.
Also... das mit dem senden funct bei mir. Das heißt Client sendet an server... server sendet zurück, dass es angekommen ist. Doch nun geht es nicht weiter. Also wenn ich im client noch mal den befehl Writestring nehm, dann sendet es nicht noch mal zum server. Oder server empfängt es nicht... das weiß ich halt nicht... Bräucht halt hilfe.. Code: [AUSKLAPPEN] ;Client:
strmGame=OpenTCPStream("192.168.1.33",8080) If strmGame<>0 Then Print "Client erfolgreich verbunden" Else Print "Konnte keine Verbindung herstellen" WaitKey() End End If WriteString strmGame,"TEEEEST" Print "Daten gesendet..." Delay 1000 Print ReadString$(strmGame)+"<---" Delay 100 WriteString strmGame,"TEEEEST22222" ;<--- das kommt dann schon nicht an Print "noch mal" Delay 1000 While Not KeyDown(1) Wend CloseTCPStream strmGame End Code: [AUSKLAPPEN] ;server
svrGame=CreateTCPServer(8080) If svrGame<>0 Then Print "Server erfolgreich gestartet" Else Print "Server konnte nicht gestartet werden" End End If While Not KeyDown(1) strStream=AcceptTCPStream(svrGame) If strStream Then Print ReadString$(strStream) Delay 1000 WriteString (strStream,"OKAY!") Else Print "Keine Daten mehr..." Delay 1000 EndIf Wend CloseTCPServer svrGame WaitKey() End Wo ran liegt es? und wie bekomm ich eine beliebig häufige datenübertragung hin? |
||
Amd 64 3200+ (939 winchester)
nvidea 6600gt (PCI-E) 1024 ddr400 200GB HDD S |
![]() |
MaTrixCruiser |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also um das ganze noch ma bissel zu vereinfachen.
Server schickt den wert der variable X an den Client. Client bekommt die daten und schickt nun "angekommen zurück". Nun soll das der Server lesen, aber dann weiterhin den wert X an den client schicken. <-- das beispiel hat wenig mit dem quelltext zu tuen Wie kann ich das machen? |
||
Amd 64 3200+ (939 winchester)
nvidea 6600gt (PCI-E) 1024 ddr400 200GB HDD S |
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich hab mir das beispiel auch mal angesehen.
Code: [AUSKLAPPEN] ;Client:
strmGame=OpenTCPStream("192.168.1.33",8080) If strmGame<>0 Then Print "Client erfolgreich verbunden" Else Print "Konnte keine Verbindung herstellen" WaitKey() End End If WriteString strmGame,"TEEEEST" Print "Daten gesendet..." Delay 1000 Print ReadString$(strmGame)+"<---" Delay 100 strmGame=OpenTCPStream("192.168.1.33",8080) WriteString strmGame,"TEEEEST22222" ;<--- das kommt dann schon nicht an Print "noch mal" Delay 1000 While Not KeyDown(1) Wend CloseTCPStream strmGame End und ein opentcp hinzugefügt... jetzt gehts mit dem 2ten mal senden... aber warum muss man den immerwieder neu öffnen? gibts da nicht nen einfacheren / schnelleren weg? und was ist auf der gegenseite mit dem server? |
||
![]() |
MaTrixCruiser |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja... eigendlich müsste doch ein stream dafür reichen beliebig hin und her zu senden?!!
Steck nun schon ne weile an dem problem... also falls irgend jemanden was zu einfällt.... könnte hilfe gebrauchen Ps:thx 2 onkelz89, dass du dich meinem komplizierten Code gewidmet hast |
||
Amd 64 3200+ (939 winchester)
nvidea 6600gt (PCI-E) 1024 ddr400 200GB HDD S |
lettorTrepuS |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Ja... eigendlich müsste doch ein stream dafür reichen beliebig hin und her zu senden?!!
Klar geht das ![]() Eigentlich müsste ReadLine usw. schon blockieren, d.h. darauf warten, bis wirklich was angekommen ist. Aber die Sache mit den Delays gefällt mir trotzdem nicht so... Am besten wäre es kontinuierlich abzufragen ob wirklich was angekommen ist, und immer zu prüfen ob überhaupt noch eine Verbindung besteht. Der Client bzw. Server könnte ja mal ausfallen. Hier mal ein Beispiel: Server: Code: [AUSKLAPPEN] server = CreateTCPServer(9090)
If server = 0 Print "Server konnte nicht gestartet werden" WaitKey End EndIf ;In diesem Type werden die einzelnen Clients die ;verbunden sind gespeichert. Type client Field stream End Type Print "Server gestartet" While Not KeyDown(1) ;Nach neuen Clients ausschau halten stream = AcceptTCPStream(server) ;Neuer Client vorhanden If stream <> 0 ;Client in eine Liste (Types) eintragen Print "Client verbunden" my.client = New client my\stream = stream EndIf ;Alle Clients in der Liste durchgehen For my.client = Each client ;Prüfen ob noch eine Verbindung existiert, wenn nicht ;wird der Stream geschlossen und der Client gelöscht. If Eof(my\stream) = -1 Or Eof(my\stream) = 1 Print "Client hat die Verbindung getrennt" CloseTCPStream(my\stream) Delete my EndIf ;Wenn der Client noch existiert (bzw. verbunden ist)... If my <> Null ;... und Daten verfügbar sind... If ReadAvail(my\stream) ;Daten auslesen und eine Antwort schicken txt$ = ReadLine(my\stream) Print "Client: " + txt$ WriteLine(my\stream, "Nachricht erhalten") EndIf EndIf Next Delay 50 Wend ;Bei allen verbunden Clients, die Verbindung trennen ;Und aus der Liste löschen For my.client = Each client CloseTCPStream(my\stream) Delete my Next ;Server beenden CloseTCPServer(server) Print "Server beendet" WaitKey End Client: Code: [AUSKLAPPEN] client = OpenTCPStream("localhost", 9090)
If client = 0 Print "Verbindung zum Server fehlgeschlagen" WaitKey End EndIf Print "Erfolgreich verbunden" While Not KeyHit(1) ;Keine Verbindung mehr... If Eof(client) = -1 Or Eof(client) = 1 Print "Verbindung mit dem Server verloren" CloseTCPStream(client) client = 0 Exit EndIf ;Wenn Daten verfügbar sind... If ReadAvail(client) ;Daten lesen und ausgeben txt$ = ReadLine(client) Print "Server: " + txt$ EndIf ;Leertaste gedrückt? If KeyHit(57) WriteLine(client, "Test-Nachricht") EndIf Delay 50 Wend ;Noch verbunden? If client <> 0 ;Stream schliessen CloseTCPStream(client) Print "Verbindung getrennt" EndIf WaitKey End Hoffe das hilft euch weiter ![]() |
||
![]() |
MaTrixCruiser |
![]() Antworten mit Zitat ![]() |
---|---|---|
ALso... VIELEN DANK
is echt super... hat mich viel zeit gekostet und du hast mir noch mehr zeit gespart!!! Problem gelöst!!! zumindest meins |
||
Amd 64 3200+ (939 winchester)
nvidea 6600gt (PCI-E) 1024 ddr400 200GB HDD S |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group