frage TCP UPD socket in BMX
Übersicht

![]() |
Mathias-KwiatkowskiBetreff: frage TCP UPD socket in BMX |
![]() Antworten mit Zitat ![]() |
---|---|---|
Client Ausschnit.
Code: [AUSKLAPPEN] Global Socket:TSocket = CreateUDPSocket()
Global Stream:TStream = CreateSocketStream(socket) Socket.connect(HostIp("purechannel.ath.cx"),2010) Server auschnitt Code: [AUSKLAPPEN] Print "starting server..."
Self.Socket = CreateUDPSocket()'socket.CreateTCP() Assert Self.socket <> Null Else "Unable to create UDP socket" Assert BindSocket(Self.Socket,Self.port) Else "Unable to bind socket on "+Self.port wenn ich peer TCP etwas sende sprich wenn cih diese 2 dinge anstadt UDP , TCP raus mache kommen meine daten an, ich sende diese mit WriteLine Stream,"Hallo Server" wenn das auf dem server ankommt soll er automatisch zurückschreiben bzw. das macht er auch, wenn ich es in tcp mache upd macht er das irgendwie nicht warum? EDIT oder wie bau ich gener ein udp server bzw. clienten auf? mit winsocks, da ich keine lib verwenden möchte. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
1. Ist nicht gesagt das ein UDP packet überhaupt ankommt.
2. Wenn du es auf ein System ausserhalb deines Routers machst, musst am Zielort eine Portweiterleitung eingerichtet sein, sonst gehts ebenfalls net. 3. Nutz einen Port der für Spiele freigegeben ist anstatt sonstwas rumzuwursteln. -> >= 6000 mindestens 4. Guck dir Vertex BNetEx an, das dürfte dir ein paar Dinge ersparen weil einfach so socket rauf, stream machen und schicken is net mit UDP |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
zu
2. Wenn du es auf ein System ausserhalb deines Routers machst, musst am Zielort eine Portweiterleitung eingerichtet sein, sonst gehts ebenfalls net. ich denke das das auf die server ebene agieren muss oder? oder muss die port weiterleitung in windows eingestellt werden? |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
garnicht
Die Portweiterleitung muss auf dem Router erfolgen, da kannst du auf deinem System nichts machen. Solange du nur auf deinem System / innerhalb deines LANs agierst benötigt es das net, sobald aber jemand vom Internet aufs lokale Netz verbinden können soll muss der, der den server laufen hat, auch die Ports forwarden oder die ports direkt offen haben (dumme idee) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
also ich benutz nun die bnetex
und wie kann man peer udp zurück am clienten senden? Code: [AUSKLAPPEN] Framework Vertex.BNetEx Global Stream : TUDPStream 'Try Stream = New TUDPStream If Not Stream.Init() Then Throw("Can't create socket") Stream.SetLocalPort(6000) Repeat If Stream.RecvAvail() Then While Stream.RecvMsg() ; Wend If Stream.Size() > 0 Then ip = TNetwork.StringIP(Stream.GetMsgIP()) While Not Stream.Eof() StreamIncomming:String = Stream.ReadLine() If streamincomming = "Hello World!" Then ip.WriteLine("LOL") Wend EndIf EndIf Forever If Stream Then Stream.Close() WriteStdout("~n- ready -~n") End ip.WriteLine("LOL") geht leider nicht weil hier angeblich ein fehler sein soll " ip = TNetwork.StringIP(Stream.GetMsgIP()) " wie kann das? |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die Nachricht sagt dir von welcher IP und Port sie kommt. Damit kannst du einen UDP Stream erzeugen und da drauf eine nachricht zurück schicken. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja das habe ich bereits versucht,
hier das server modell Code: [AUSKLAPPEN] Framework Vertex.BNetEx Global Stream : TUDPStream 'Try Stream = New TUDPStream If Not Stream.Init() Then Throw("Can't create socket") Stream.SetLocalPort(6000) Stream.SetRemotePort(6000) Repeat If Stream.RecvAvail() Then While Stream.RecvMsg() ; Wend If Stream.Size() > 0 Then ' ip = TNetwork.StringIP(Stream.GetMsgIP()) While Not Stream.Eof() StreamIncomming:String = Stream.ReadLine() WriteStdout StreamIncomming If streamincomming = "Hello World!" Then Stream.SetRemoteIP(TNetwork.IntIP(TNetwork.StringIP(Stream.GetMsgIP()))) Stream.WriteLine("Hello World1!") WriteStdout(Stream.SendMsg() + " Bytes sended~n") EndIf Wend EndIf EndIf Forever If Stream Then Stream.Close() WriteStdout("~n- ready -~n") End und hier das client modell Code: [AUSKLAPPEN] SuperStrict
Framework Vertex.BNetEx Global Stream : TUDPStream Stream = New TUDPStream If Not Stream.Init() Then Throw("Can't create socket") Stream.SetRemoteIP(TNetwork.IntIP("127.0.0.1")) Stream.SetLocalPort() Stream.SetRemotePort(6000) Stream.WriteLine("Hello World!") WriteStdout(Stream.SendMsg() + " Bytes sended~n") Repeat If Stream.RecvAvail() Then End While Stream.RecvMsg() ; Wend If Stream.Size() > 0 Then ' ip = TNetwork.StringIP(Stream.GetMsgIP()) While Not Stream.Eof() WriteStdout Stream.ReadLine() Wend EndIf EndIf Forever If Stream Then Stream.Close() WriteStdout("~n- ready -~n") End er soll wenn client Hello World! gesendet hat zurück am clienten Hello World1! senden, allerdings sendet er es direct an sich selber, sprich der server am server. und das wollt ich eigentlich nicht damit der server es am clienten sendet habe ich volgendes eingebaut: (am server eingebaut) Code: [AUSKLAPPEN] Stream.SetRemoteIP(TNetwork.IntIP(TNetwork.StringIP(Stream.GetMsgIP())))
Stream.WriteLine("Hello World1!") WriteStdout(Stream.SendMsg() + " Bytes sended~n") |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group