Beispiele Socket-Anwendung mit Java

Werbung
Beispiele Socket-Anwendung mit Java
Beide Beispiele zeigen einen Client, der sich mit dem echo-Daemon eines Rechners
verbindet.
1. Socket mit TCP
Der EchoClient liefert die eigentliche Funktionalität, die Klasse EchoTest erzeugt
den verwendeten Socket und den EchoClient.
import java.io.*;
import java.net.*;
/** Class EchoClient = Client, der auf Port 7
schreibt und das Echo des Servers abhoert
*/
public class EchoClient {
private BufferedReader kybd;
/** Konstruktor */
public EchoClient () {
kybd = new BufferedReader(new InputStreamReader(System.in));
}
/** Methode echoclient, die die Eingabe von Tastatur
uebernimmt und als Echo Beispiel bearbeitet
*/
public void echoclient (BufferedReader in,
PrintStream
out) {
String line;
while (true) {
line = "";
// von Tastatur lesen und an TCP socket weitergeben
try {
line = kybd.readLine();
out.println(line);
}
catch (IOException e) { System.err.println(e.getMessage());}
// TCP socket lesen und auf Konsole ausgeben
try {
line = in.readLine();
System.out.println(line + "... echo von Socket");
}
catch (IOException e) { System.err.println(e.getMessage());}
}
}
}
1
import java.io.*;
import java.net.*;
/** Class EchoTest ist Testklasse, die eine Socketverbindung
mit Port 7 eines gewuenschten Hosts erstellt und
ein Objekt der Klasse EchoClient auf diesem Port
arbeiten laesst.
*/
public class EchoTest {
public static void main (String [] args) {
Socket s = null;
EchoClient client = new EchoClient();
BufferedReader in;
PrintStream out;
try {
s = new Socket (args[0], 7);
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
out = new PrintStream (s.getOutputStream());
System.out.println("Connected to " +s.getInetAddress() +":"
+s.getPort());
client.echoclient (in, out);
}
catch (IOException e) { System.err.println(e);}
// Aufraeumen am Ende!
finally {
try { if (s != null) s.close(); }
catch (IOException e) {}
}
}
}
2
2. Socket mit UDP
Hier erzeugt der Client auch den UDP-Socket, mit dem dann die Nachrichten
verschickt werden.
import java.io.*;
import java.net.*;
public class UDPEchoClient {
private BufferedReader kybd;
private DatagramSocket udpSocket;
private InetAddress hostAddress;
private byte buf [];
private DatagramPacket dp;
public UDPEchoClient () {
buf = new byte [1000];
try {
udpSocket = new DatagramSocket();
kybd = new BufferedReader(new InputStreamReader(System.in));
hostAddress = InetAddress.getByName("localhost");
}
catch (Exception e) { System.err.println(e); }
}
public void udpEchoclient () {
String line;
try {
while (true) {
line = "";
// von Tastatur lesen und an UDP socket weitergeben
try {
line = kybd.readLine();
byte [] message = new byte [line.length()];
message = line.getBytes();
DatagramPacket packet = new DatagramPacket
(message, line.length(), hostAddress, 7);
udpSocket.send(packet);
dp = new DatagramPacket (buf, buf.length);
udpSocket.receive(dp);
System.out.println("von " +dp.getAddress() +":" +dp.getPort()
+"erhalten: " +new String(dp.getData(),0,dp.getLength()));
}
catch (IOException e) { System.err.println(e.getMessage());}
}
}
finally {
try { if (udpSocket != null) udpSocket.close();}
catch (Exception e) {}
}
}
}
3
import java.io.*;
public class UDPEchoTest {
public static void main (String [] args) {
UDPEchoClient client = new UDPEchoClient();
client.udpEchoclient ();
}
}
4
Herunterladen