2012-03-31 7 views
0

Ich versuche, ein Stück Software zu schreiben, dieSockets und DatagramChannels

  • einfache UDP-Nachrichten (Text-Strings) von einfachem UDP-Client akzeptieren,
  • öffnet Verbindung zu einem anderen Server und leiten Nachrichten an sie
  • Streams für diesen Server Antwort und
  • nach vorn, die dem Kunden antworten zurück.

So ist es ein einfacher Zwischenserver.

die Kommunikation sichtbar zu machen:

Client-< ---> Zwischenserver < ---> "Real" Server

Der Client zum Zwischen verbindet hat aber keine Ahnung, dass die Botschaft sendet er ist auf einen anderen Server weitergeleitet wird oder dass die Antwort tatsächlich von einem anderen Server stammt. Soweit der Kunde es interessiert, ist der Zwischenserver der echte Server.

Ich versuche, Java DatagramChannel dafür zu verwenden, aber nicht ganz sicher, wie richtig diese in einem nicht-Hack Art und Weise zu tun. Benütze ich zwei DatagramChannels? Eine für Client - Intermediate und die andere für Intermediate - Real Server?

Ein allgemeiner Überblick über die Vorgehensweise wäre wünschenswert, besonders wenn ich jedes Mal einen Socket öffnen muss, wenn ich eine Nachricht vom Intermediate zum Real Server weiterleiten muss, oder wenn ich diesen Socket irgendwie offen halten kann.

+0

Ich würde ständig TCP-Verbindungen den ganzen Weg verwenden. Aber wenn Sie UDP verwenden müssen, würde ich DatagramChannel verwenden. –

+0

Also kann ich irgendwie nur einen DatagramChannel verwenden, wenn das Zwischenprodukt mit Client und Server sprechen muss? – xingyu

+0

An jedem Ende, ja. –

Antwort

1

Sie benötigen nur einen Datagramm-Socket für diese, und man kann es für das Leben des Prozesses offen halten.

+0

So kann ich eine Buchse oder Datagramm-Kanal verwenden Objekt auf Zwischen mit Client und echtem Server zu sprechen? – xingyu

+0

@xingyu Ich habe das schon genau gesagt. Warum fragst du mich, meine Aussage zu bestätigen? – EJP