| razred Socket služi za pisanje omrežnih odjemalcev, ki se lahko priključijo na nek strežnik in se z njim pogovarjajo; | |
| Java podpira tudi t.i. UDP oz. datagramske povezave z DatagramSocket, ki pa jih ne bomo posebej omenjali; |
Primer odjemalca, ki se priključi na strežnik,
strežniku pošilja, kar tipka odjemalec in odjemalcu izpisuje, kar strežnik
vrača. Programu damo dva arguenta; ime računalnika, ter vrata na katera
naj se poveže.
import java.io.*;
import java.net.*;
public class test {
public static void main(String[ ] args) throws IOException {
Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;
String line;
if (args.length!=2) {
System.err.println("Usage: test machine_name port_number!");
System.exit(1);
}
try {
echoSocket = new Socket(args[0], Integer.parseInt(args[1])); // vzpostavimo povezavo na računalnik in vrata
out = new PrintWriter(echoSocket.getOutputStream(), true); // tok za pisanje
in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream())); // tok za branje
} catch (UnknownHostException e) {
System.err.println("Don't know about host: stoned.");
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to: stoned.");
System.exit(1);
}
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in)); // beremo iz std. vhoda
String fromUser, fromServer;
while ((fromServer = in.readLine()) != null) { // beremo kar strežnik pošilja
System.out.println("Server: " + fromServer);
if (fromServer.equals("Bye."))
break;
fromUser = stdIn.readLine();
if (fromUser != null) {
out.println(fromUser); // pošljemo strežniku
}
}
out.close();
in.close();
stdIn.close();
echoSocket.close(); // poleg tokov zapremo še Socket posebej
}
}