TCPSERVER

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

regaa

Betreff: TCPSERVER

BeitragDi, März 02, 2004 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Alsoooo, dieses Prog funzt local supaa, also bis auf das prob das windows an ienm desktop den zwei programmen je nachdem ob es aktiv ist verschiedene priorität zuweist, aber das ist ja nicht das prob, sondern viel mehr wenn ich die ip adresse abändere, auf die ip von jemandem der keine firewall laufen hat, und die server.exe dann geht das in die hose, und client.exe findet keine verbindung zur server.exe:

server:
Code: [AUSKLAPPEN]

Graphics 800,600,32,2
SetBuffer BackBuffer()

svrGame=CreateTCPServer(8080)
If svrGame<>0 Then
   Print "Server erfolgreich gestartet"
Else
   Print "Server konnte nicht gestartet werden"
EndIf
Delay 1000

verbindung=0

While verbindung=0
strStream=AcceptTCPStream(svrGame)
If strStream Then
   Print ReadLine$(strStream)
   verbindung=1
Else
   Print "Keine Daten vom Client..."
   verbindung=0
   Delay 1000
EndIf
Wend


If verbindung=1
   While Not KeyHit(1)
   command$=ReadLine$(strStream)
      If command$<>0
         Color 255,255,255
         Rect 0,0,800,600,1
         Color 0,0,0
         Print command$
         Flip
      EndIf
      framer()
   Wend
   CloseTCPServer svrGame
EndIf




; Eigene Functionen
Function framer()                           ; != 100% auslastung + 60 frames
   startzeit=MilliSecs()   
   herz=60
   While (MilliSecs()-startzeit)<(1000/herz)
      Delay(10)
   Wend
End Function


client
Code: [AUSKLAPPEN]

Graphics 800,600,32,2
SetBuffer BackBuffer()

strmGame=OpenTCPStream("217.235.189.159",8080)
If strmGame<>0 Then
   Print "Client erfolgreich verbunden"
Else
   Print "Konnte keine Verbindung herstellen"
   WaitKey
End If

While Not KeyHit(1)
   If MouseHit(1)
      Color 255,255,255
      Rect 0,0,800,600,1
      Color 0,0,0
      WriteLine strmGame,"Dieser Text wird übermittelt..."
      Print "Daten gesendet..."
   EndIf
   framer()
Wend
CloseTCPStream strmGame
End







; Eigene Functionen
Function framer()                           ; != 100% auslastung + 60 frames
   startzeit=MilliSecs()   
   herz=60
   While (MilliSecs()-startzeit)<(1000/herz)
      Delay(10)
   Wend
End Function


Woran kann das liegen?

regaa

BeitragMi, März 03, 2004 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab jetzt mal n UDP Messenger gebaut, total billig, und kopiert ist es auch noch, so das prob ist, das alle die zu mir was cshreiben , von denen kann ichdie nachricht lesen, aber wenn cih was cshreibe, dann geht das nicht, wieso? Und es psielt dabei keine Rolle wer das programm als erster startet.

Code: [AUSKLAPPEN]

PRINT "Sample UDP Communications"

Inp_Port=4000
Out_Port=4001

PRINT "LOCAL IP:"

ip_count=COUNTHOSTIPS(GETENV("localhost"))
For i=1 To ip_count
   If i=2 Then Print "Internet IP:"
   Print DottedIP(HostIP(i))
Next

Print "Enter Destination IP#: xxx.xxx.xxx.xxx"
Dest_IP$=Input$(">")
IP= INT_IP(Dest_IP$)

PRINT ""
Print "Starting Chat. To quit press ESC"

udp_rd=CreateUDPStream(Inp_Port)
udp_wr=CreateUDPStream(Out_Port)

Repeat

byte1=GetKey()
If byte1>0 Then
   If Byte1=13 Then
      Print
      WriteByte(udp_wr,byte1)
      SendUDPMsg udp_wr,IP,Inp_Port
   Else
      Print
      Write Chr(Byte1)
      WriteByte(udp_wr,byte1)
      SendUDPMsg udp_wr,IP,Inp_Port
   EndIf
EndIf

IP_rd=RecvUDPMsg(udp_rd)

If IP_rd <> 0 Then
   Buflen=ReadAvail(udp_rd)
   If Buflen> 0 Then
      byte1=ReadByte(udp_rd)
      If byte1=13 Then
         Print
      Else
      Print
         Write "Nachricht:"+Chr$(byte1)
      EndIf
   EndIf
EndIf

If KeyDown(1)
   CloseUDPStream udp_wr
   CloseUDPStream udp_rd
EndIf
Forever

Function INT_IP(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
 

BIG BUG

BeitragMi, März 03, 2004 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit UDPMSGPORT kannst du nach dem Empfangen den verwendeten Port des Senders herausfinden.
Zumindest bei meinen Tests kam es hier vor, dass der in BB angegebene Port nicht immer mit dem tatsächlich verwendeten Port übereingestimmt hat.
Vielleicht wurde er vom ISP umgebogen...

Es reicht hier übrigens einen Port zu verwenden, ein extra in / out ist bei UDP nicht notwendig.
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group