Erste UDP versuch
Übersicht BlitzBasic Beginners-Corner
Jo0okerBetreff: Erste UDP versuch |
Mi, Jul 30, 2008 22:51 Antworten mit Zitat |
|
---|---|---|
Hallo, ich habe mal versucht, eine einfache UDP bverbindung aufzubauen.
Wenn ich nun den server starten, und dann im client versuche etwas abzuschicken, bekomme ich immer die Meldung: Stream dows not exist.... Wenn ich nur den clienten starte, bekomme ich keine fehlermeldung... woran liegt das? Server: Code: [AUSKLAPPEN] Graphics 1024,768,32,2 SetBuffer BackBuffer() ;Streams senderStream = CreateUDPStream(8001) empfStream = CreateUDPStream(8000) timer = CreateTimer(50) While Not KeyHit(1) Cls If ReadAvail(empfStream) <> 0 Then Print ReadLine(empfStream) EndIf WaitTimer(timer) Flip Wend Client: Code: [AUSKLAPPEN] Graphics 1024,768,32,2 SetBuffer BackBuffer() ;Streams senderStream = CreateUDPStream(8001) empfStream = CreateUDPStream(8000) IP_Adresse = INT_IP(Input$()) timer = CreateTimer(50) While Not KeyHit(1) Cls WriteLine(senderStream, Input$()) SendUDPMsg senderStream, IP_Adresse WaitTimer(timer) Flip Wend 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 lg Jo0oker |
||
Tehadon, das kostenlose 3D RPG
www.tehadon.de http://www.blitzforum.de/worklogs/14/ Das Abenteuer wird beginnen! |
Eingeproggt |
Mi, Jul 30, 2008 23:24 Antworten mit Zitat |
|
---|---|---|
Startest du beide Programme auf einem Rechner?
Dann blockiert der Server den Port, somit kann der Client ned nen Stream drauf erstellen. (Mal davon abgesehen, dass dein Code ned wirklich 100% sauber ist... Der Server sollte RecvUDPMsg ausführen und einen timer+Flip 1 anzuwenden macht wenig Sinn) mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Jo0oker |
Mi, Jul 30, 2008 23:36 Antworten mit Zitat |
|
---|---|---|
Danke,
jap, ich teste das ganze auf einem rechner... lg Jo0oker |
||
Tehadon, das kostenlose 3D RPG
www.tehadon.de http://www.blitzforum.de/worklogs/14/ Das Abenteuer wird beginnen! |
TimBo |
Do, Jul 31, 2008 1:03 Antworten mit Zitat |
|
---|---|---|
Hi,
is zwa n bisl spät aber vll. lieste das ja noch. Wenn du das an einem PC versucht, dann benutze die IP 127.0.0.1 ansonsten die Lokale IP. Viele Grüße TImBo Edit: mhh der Sendestream sendet an Port 8001 und er Empfänger liest Port 8000 das funktioniert so nicht. ^^ Das muss so sein: Server Senden 8001 Empfangen 8000 Client Senden 8000 Empfangen 8001 aber warum machst du mehere Streams? Wenn man alles Sauber ausließt geht auch locker ein Stream XD Edit2: eingeproggt, du warst schneller ^^ |
||
- Zuletzt bearbeitet von TimBo am Do, Jul 31, 2008 1:18, insgesamt 3-mal bearbeitet
Eingeproggt |
Do, Jul 31, 2008 1:12 Antworten mit Zitat |
|
---|---|---|
ähm.. TimBo.. Bist du dir sicher, dass das hilft? zB schonmal selber versucht?
Natürlich ist 127.0.0.1 die lokale IP. Das ändert aber wenig daran, dass man nicht 2 Streams auf einem Port eröffnen kann, was versucht wird, wenn man es so in einem Programm vorgibt und dann das Programm zweimal startet mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Tankbuster |
Do, Jul 31, 2008 1:21 Antworten mit Zitat |
|
---|---|---|
Der Trick ist einfach
Programm 1: Port = 8000 SendUDPMsg 8001 Programm 2: Port = 8001 SendUDPMsg 8000 So brauch man nur einen Port/Programm. Außerdem solltest du drauf achten, die IP in einen Integer umgewandelt zu haben (hast du wahrscheinlich schon) Ich hoffe ich konnte Helfen. MFG |
||
Twitter
Download Jewel Snake! Windows|Android |
TimBo |
Do, Jul 31, 2008 1:26 Antworten mit Zitat |
|
---|---|---|
Hi
@ Tankbuster: genau das ist es XD und er hat es schon Zitat: Code: [AUSKLAPPEN] 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 es gibt noch einen Besseren Trick programm 1+2 port=8000 sendudpmsg 8000 wenn man die daten gescheit ausliest, ist alles gut ^^ mfg TImBO |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
Tankbuster |
Do, Jul 31, 2008 1:30 Antworten mit Zitat |
|
---|---|---|
TimBo hat Folgendes geschrieben: Hi
es gibt noch einen Besseren Trick programm 1+2 port=8000 sendudpmsg 8000 wenn man die daten gescheit ausliest, ist alles gut ^^ mfg TImBO Das geht nicht. |
||
Twitter
Download Jewel Snake! Windows|Android |
TimBo |
Do, Jul 31, 2008 1:41 Antworten mit Zitat |
|
---|---|---|
nicht
lol mein 4-Gewinnt Bcc 14 oder so da habe ich auch nur einen Stream beide öffnen Port 8000 aber das geht nicht, wenn man das programm am selben PC laufen hat. Wenn man 2 PC's zur verfügung hat geht das mit einem Stream zu 100%! Viele Grüße TimBo |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
Eingeproggt |
Do, Jul 31, 2008 2:13 Antworten mit Zitat |
|
---|---|---|
Zitat: aber das geht nicht, wenn man das programm am selben PC laufen hat.
Und genau darum gehts |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Jo0oker |
Do, Jul 31, 2008 8:18 Antworten mit Zitat |
|
---|---|---|
Danke @all,
hier noch mal für andere der funktionierende code; Code: [AUSKLAPPEN] Graphics 1024,768,32,2 SetBuffer BackBuffer() Flip ;Streams senderStream = CreateUDPStream(8000) empfStream = CreateUDPStream(8001) IP_Adresse = INT_IP(Input$()) timer = CreateTimer(50) While Not KeyHit(1) Cls WriteLine(senderStream, Input$()) SendUDPMsg senderStream, IP_Adresse, 8000 WaitTimer(timer) Flip Wend 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 lg Jo0oker |
||
Tehadon, das kostenlose 3D RPG
www.tehadon.de http://www.blitzforum.de/worklogs/14/ Das Abenteuer wird beginnen! |
marcelkroener |
Fr, Aug 01, 2008 11:08 Antworten mit Zitat |
|
---|---|---|
Bei einem meiner spiele hab ich
für client und server je einen port. das funzt ohne probleme |
||
tft |
Sa, Aug 02, 2008 17:51 Antworten mit Zitat |
|
---|---|---|
Hi ...
wenn du es so machst.... Code: [AUSKLAPPEN] ip1=HostIP(1)
ipaddress$ = DottedIP$(ip1); ;UdpID=MilliSecs() UdpIp$=ipaddress$ UdpIntIp= INT_IP(UdpIp$) UdpStreamOut=CreateUDPStream() If UdpStreamOut=0 Then RuntimeError("Cant open UdpStreamOut") UdpPortOut=UDPStreamPort(UdpStreamOut) UdpStreamIn=CreateUDPStream() If UdpStreamIn=0 Then RuntimeError("Cant open UdpStreamIn") UdpPortIn=UDPStreamPort(UdpStreamIn) Dann must du dir über die Ports keine gedanken machen. Es werden dann automatisch frei Ports verwendet und du must diese nur noch benutzen. UdpPortIn ist der Port für den Input UdpPortOut der für den Ausgang Das funktioniert auch an einem Rechner mit Host und Clients die Parralel laufen ganz gut. Gruss TFT |
||
TFT
https://www.sourcemagic.ch Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!! |
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group