[TCP] Basic TCP Chat - Funzt nicht [ERLEDIGT]
Übersicht

![]() |
N0XBetreff: [TCP] Basic TCP Chat - Funzt nicht [ERLEDIGT] |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey!
Ich habe eben versucht den 'Basic TCP Chat' über's Internet und über's LAN zu testen. Leider hat beides nicht funktioniert. Ich habe 100%ig die richtigen IP-Adressen verwendet. Port-Forwarding ausgeführt. Hier der Code: [AUSKLAPPEN] Graphics3D 500,400,16,2
SetBuffer BackBuffer() AppTitle("Basic TCP Example") Global Status$ Global PortIn% = 25000 Global fntArialB = LoadFont("Arial",18,True) Global RecMsg$ Global SndMsg$ Global PType% Global Client% Global ClientStrm Global Server% Global Join_IP$ Global Send_IP% Global Serv_IP% Global OpenChat% Cam = CreateCamera() PositionEntity Cam,0,200,-20 Choice$ = Input("Would you like to host a chat server or join one? [h or j]") If Choice = "h" Or Choice = "H" Then Server = CreateTCPServer(PortIn) ;Server listens on 25000 ;Check if Server was created If Server <> 0 Then Status = "Server started..." Else Status = "Error starting server." EndIf PType = 1 ;Is Player a host? Else Join_IP$ = Input("Enter the ip address of host: [192.168.0.231]") If Len(Join_IP) = 0 Then Join_IP = "192.168.0.231" ;if no ip addy is given, this is the default Client = OpenTCPStream(Join_IP,PortIn) ;Client Listens on 25000 ;Check if client connected to server If Client <> 0 Then Status = "Client connected to "+Join_IP Else Status = "Error starting client." EndIf PType = 2 ;Is Player a Client? EndIf Color 0,255,0 SetFont fntArialB While Not KeyHit(1) Check_Keys() If PType = 1 Then ;Player is a server ;Check for new stream strStrm = AcceptTCPStream(Server) ;if there is a new stream, capture the stream If strStrm Then ClientStrm = strStrm Else ;if there is a captured stream check if there is a message in it If ClientStrm <> 0 If ReadAvail(ClientStrm) Then Send_IP = TCPStreamIP(ClientStrm) ;Get IP Address of Message Sender RecMsg = ReadLine$(ClientStrm) ;Get the message from the stream EndIf EndIf EndIf EndIf If PType = 2 Then ;Player is a client ;check if there is a message in the stream If ReadAvail(Client) Then Send_IP = TCPStreamIP(Client) ;Get IP Address of Message Sender RecMsg = ReadLine$(Client) ;Get the message from the stream End If EndIf UpdateWorld() RenderWorld() Text 10,20,"Status: "+Status Text 10,40,"[Press any keys to type a message, return to send it]" Text 10,60,"[Press enter to send a message, press esc to exit]" Text 10,80,"[Client must send first message so server can capture Client Stream]" Text 10,100,"strStrm: "+strStrm Text 10,120,"ClienStrm: "+ClientStrm Text 10,140,"Port: "+PortIn Text 10,160,"PType: "+PType Color 0,0,255 If RecMsg <> "" Then Text 10,340,Send_IP+": "+RecMsg Color 0,255,0 Text 10,370,">: "+SndMsg Flip Wend If PType = 1 Then If ClientStrm <> 0 Then ;Close Server stream and server CloseTCPStream(ClientStrm) CloseTCPServer(Server) EndIf EndIf If PType = 2 Then CloseTCPStream(Client) ;Close client TCP Stream ClearWorld() End() Function Check_Keys() ;Grab any keys that get pressed TKey% = GetKey() If TKey <> 0 Then If Tkey <> 8 Then ;8 = backspace key ;convert pressed key to the actual character TChr$ = Chr$(TKey) ;append string with last key pressed SndMsg = SndMsg + TChr Else ;if backspace key is hit, erase last letter of message If Len(SndMsg) > 0 Then SndMsg = Left(SndMsg,Len(SndMsg)-1) EndIf EndIf ;hitting enter key will send contents of sndmsg to client/server If KeyHit(28) Then ;Enter key If PType = 1 And ClientStrm <> 0 And SndMsg <> "" Then ;Player is a host, send message to client ;send message to Client WriteLine(ClientStrm,SndMsg) EndIf If PType = 2 Then ;And SndMsg <> "" Then ;Player is a client, send message to server ;Send message to server WriteLine(Client,SndMsg) EndIf SndMsg = "" ;message was sent, clear message to make room for a new message OpenChat = 0 EndIf End Function Mfg, N0X //EDIT: Der Fehler tritt beim joinen auf, wenn er das erste Mal was schicken will. |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
- Zuletzt bearbeitet von N0X am Sa, Aug 08, 2009 15:04, insgesamt einmal bearbeitet
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eine Frage: Wo liegt der Fehler? Und was ist es für einer?
Bei mir läuft alles über LAN wunderbar... Schaue mal, ob deine Firewall das Programm blockiert. Zitat: [Client must send first message so server can capture Client Stream]
Das stimmt aber nicht. Der Server kann auch ohne gesendete Nachricht den Client finden. Vielleicht habe ich dein Problem übersehen. Sage also am Besten, was bei dir beim Ausführen geschieht. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich starte den Chat als Host auf meinem PC und als Client auf meinem Laptop.
Sobald ich auf meinem Laptop die IP des PC's eingegeben hab, zeigt er mir 'Stream does not exist' in der 'WriteLine' Zeile: Code: [AUSKLAPPEN] If PType = 2 Then ;And SndMsg <> "" Then ;Player is a client, send message to server
;Send message to server WriteLine(Client,SndMsg) EndIf //EDIT: Ich habe eben auch noch andere Chat's probiert und festgestellt das keiner von denen funzt. Liegt's vielleicht an Manueller IP-Vergabe? Die Verbindung sonst, läuft stabil mit 100MBit's. Beide in einem Netzwerk, Datenaustausch möglich. |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
"Client" ist 0, weil keine Verbindung hergestellt werden konnte.
Durch den IP-Input wurde die Entertaste gedrückt und daher möchte das Programm eine Nachricht senden. Da der Stream aber nicht existiert, gibt es diese Meldung. Schaue dir mal den Wert von "Client" im Debugger an. Probiere Server und Client zusammen an einem Computer aus. Schalte deine Firewall mal zum LAN-Test für kurze Zeit aus. Das Problem liegt aber auf alle Fälle irgendwo bei der Verbindung und nicht am Code. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie kann ich mir den Wert denn angucken?
An einem Pc mit lokaler IP funzt. Mit ausgeschalteter Firewall auf 2 PC's funzt nicht. Alle Windows-Funktionen über LAN funktionieren ja, nur in BlitzBasic klappt's dann nicht. |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst den Debugger nutzen und dort bei dem Zusatzfenster nach der Variable "Client" suchen oder du schreibst für das nächste Auführen einen Runtimeerror nach "Client=...", der diese Variable ausgibt.
Dass es im LAN nicht funktioniert ist aber wirklich seltsam, wenn du sogar auf z.B. die freigegebenen Dateien des anderen Computers zugreifen kannst. Ich habe jetzt keine Idee mehr. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Manuelle IP Vergabe... Verursacht oft probleme sofern der Router so eingestellt ist das der die IP's automatisch vergeben soll. Zumindest hier.
Habs mal getestet: mit manueller ipvergabe: Stream does not exist ohne: funzt problemlos Firewall war beidesmal an(Windows und HardwareFirewall) |
||
Warbseite |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, beim Router ist die IP-Vergabe auf Automatisch eingestellt.
Bei meiner LAN-Verbindung, auf Manuell. Allerdings kann ich das auch nicht umstellen, da er sonst 'Eingeschränkte oder keine Konnektivität' anzeigt. Dann kann ich keine Daten austauschen, nicht mal den Computer "sehen".(Netzwerkumgebung->Arbeitsgruppencomputer anzeigen) |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
hazumu-kun |
![]() Antworten mit Zitat ![]() |
---|---|---|
In einem Standardmäßigem LAN müsste Automatische IP-Vergabe in jedem Fall funktionieren, jedenfalls für deine Zwecke.
Was hastn da kaputtkonfiguriert? |
||
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann -> nicht omnipotent |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich 'hab die IP komplett kaputtkonfiguriert ^^
Naja hat sich geklärt, war falsche Subnetzmaske und falscher Port. |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group