Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 13.01.2010, 20:12 Titel: UDP Problem |
|
|
Hallo
Ich habe ein Problem bei Datenübertragung mit UDP.
Der Server kann nur empfang und der Client nur senden.
Wenn ich mit dem Server versuche etwas zu senden kommt es bei dem Client nicht an.
Ich benutze chiSock.
Kann mir da jemand helfen? |
|
Nach oben |
|
 |
Stueber
Anmeldungsdatum: 07.07.2008 Beiträge: 202
|
Verfasst am: 13.01.2010, 20:20 Titel: |
|
|
Ohne Quelltext und ohne Informationen wie Portnummer wird dir keiner helfen können. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 13.01.2010, 20:59 Titel: |
|
|
Doch, ich, ich gebe gerne Lösungen mit der gleichen Präzision, mit der auch das Problem geschildert wurde:
Du hast was falsch gemacht! Um das zu lösen, musst du es richtig machen!
 _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 13.01.2010, 21:43 Titel: |
|
|
der client sitzt nicht zufällig hinter einem NAT router und der server versucht zum zurücksenden zunächst ne neue verbindung mit dem client aufzunehmen? _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 13.01.2010, 23:12 Titel: |
|
|
Der Server und der Client laufen beide auf meinem Rechner und werden nicht durch irgendwelche Firewalls geschützt. Mit TCP läuft es aber UDP geht nur in eine richtung.
Client: Code: | #Include "chisock/chisock.bi"
Using chi
Dim UdpClient As Socket
Dim DataInput As String
Dim DataOutput As String
UdpClient.UDP_Client("localhost", 1337)
Do
DataOutput = InKey()
If DataOutput <> "" Then
UdpClient.Put(DataOutput)
EndIf
If UdpClient.Get(DataInput) Then
Print DataInput
EndIf
Loop Until MultiKey(1)
UdpClient.Close() |
Server: Code: | #Include "chisock/chisock.bi"
Using chi
Dim UdpServer As Socket
Dim DataInput As String
Dim DataOutput As String
UdpServer.UDP_Server(1337)
Do
DataOutput = InKey()
If DataOutput <> "" Then
UdpServer.Put(DataOutput)
EndIf
If UdpServer.Get(DataInput) Then
Print DataInput
EndIf
Loop Until MultiKey(1)
UdpServer.Close() |
|
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 13.01.2010, 23:37 Titel: |
|
|
Das liegt einfach an der natur des UDP's. Wie in TSNE zu sehen, wird ein UDP Socket per "Bind" angebunden.
Dabei ist es nicht möglich einen Port 2x auf der selben "kiste" an ein socket zu binden. Zumindest nicht so, wei du das gerne haben willst. Es gäbe da den "REUSER" Option per Socketoption zu setzen, der es ermöglicht 2 x den selben Port zu binden. Das Problem an der sache ist jedoch, das der 2te Bind automatisch der empfänger wird, udn der erste "übergangen" wird, solange die nachfolgenden Bind's existieren.
Bei TCP wird das anders gemacht. Hier wird ein alternativ-Port verwendet, der in das Packet eingebunden wird. Dadurch ist es möglich (siehe Wireshark bzw. Etherreal oder Ethercap), einen Verbindugn auch lokal zu verwenden. bzw. mehrere Verbindungen auf einem Port zu nutzen.
Erstellst du beispielsweise einen TCP Server, udn verbindest sich 2x (simultan) mit diesem server, lokal, dann wird ein anderer Port als der im server angegebene verwendet um die verbindung herzustellen. Dies ist auch der Grund,w arum die anzhal verbindungen (gleichzeitig) auf 6555 beschränkt ist. Einfach deshalb, weil es nur so viele Port's gibt.
Willst du also lokal eine server/client verbindung, bzw. eine "kommunikation" per UDP realisieren, musst du das TCP -Managment von hand schreiben udn die Portkomunikation und verwaltung ebenfalls.
oder aber, du nutzt 2 port's
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 15.01.2010, 15:58 Titel: |
|
|
Das heißt also, wenn ich zwei verschiede Rechner nehme läufts?! |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 15.01.2010, 17:38 Titel: |
|
|
das weis ich nicht. Das Kommt drauf an, ob chisocks beim erzeugen eines "clienten" sowohl einen socket zum senden UND empfangen erzeugt, oder nur einen für eine richtung.
Da ich chisocks nicht kenne, kann ich dir das nicht sagen, bis auf: Testen.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
|