Hilfe

RecvUDPMsg

B2D B+ B3D

Aufruf

IP = RecvUDPMsg (Stream)

Parameter

Stream Identität eines UDP-Streams (ermittelt mit CreateUDPStream)


Rückgabewert

Es wird eine Integer-IP-Adresse zurückgeliefert, von wo die Nachricht gesendet wurde. Benutze DottedIP, um daraus die normale IP-Adresse zu ermitteln. Wenn eine 0 zurückgeliefert wird, dann wurde keine Nachricht empfangen.


Beschreibung

Diese Funktion kann neue Nachrichten empfangen und eine IP-Adresse zurückliefern, wenn eine Nachricht aus dem Netzwerk empfangen wurde. Andernfalls liefert es 0 zurück. Mit DottedIP kann aus dem Integer eine normale IP-Adresse errechnet werden. Die Nachricht kann mit normalen Read-Befehlen ausgelesen werden.
Bevor man es benutzen kann, muss man allerdings noch CreateUDPStream ausführen. Die Nachricht wird mit RecvUDPMsg empfangen. Mit UDPMsgPort kann der benutzte Port ermittelt werden. Mit SendUDPMsg kann dagegen eine Nachricht verschickt werden.


Beispiel

Eine UDP-Beispiel Situation

Graphics 800, 600
SetBuffer BackBuffer()
Inp_Port = 4000
Out_Port = 4001
ip_count = CountHostIPs(GetEnv("localhost"))

Repeat
   Text 0, 0, "Sample UDP Communications"
   Text 0, 10, "LOCAL IP:"
   For i = 1 To ip_count
      Text 0, 20, DottedIP(HostIP(1))
   Next
   Text 0, 30, "Enter Destination IP#: xxx.xxx.xxx.xxx"
   Dest_IP$ = NewInput$(Dest_IP$)
   Text 0, 40, ">" + Dest_IP$ + "|"
   Flip
   Cls
Until KeyDown(28)

IP = INT_IP(Dest_IP$)
udp_rd = CreateUDPStream(Inp_Port)
udp_wr = CreateUDPStream(Out_Port)
Repeat
   
   Text 0, 40, "Starting Chat... Press ESC to quit"
   
   byte1 = GetKey()
   If byte1>0 Then
      If Byte1 = 13 Then
         WriteByte(udp_wr, byte1)
         SendUDPMsg udp_wr, IP, Inp_Port
      Else
         drawedSendText$ = drawedSendText$ + 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
            drawedRecText$ = drawedRecText$ + Chr$(byte1)
         EndIf
      EndIf
   EndIf
   Text 0, 50, drawedSendText$
   Text 0, 60, drawedRecText$
   Flip
   Cls
Until KeyDown(1)


CloseUDPStream udp_wr
CloseUDPStream udp_rd
End

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

Function NewInput$(currentText$)
   localChar = GetKey()
   If (localChar > 0) And (localChar <> 8 ) Then
      currentText$ = currentText$ + Chr$(localChar)
   ElseIf localChar = 8 Then
      length = Len(currentText)
      If length > 0 Then
         currentText = Left(currentText, length - 1)
      EndIf
   EndIf
   Return currentText$
End Function


Siehe auch

CreateUDPStream, SendUDPMsg, UDPMsgIP, UDPMsgPort, UDPTimeouts

Übersicht Netzwerk UDP