Java Sockets Programming The package java net provides

  • Slides: 21
Download presentation
Java Sockets Programming • The package java. net provides support for sockets programming (and

Java Sockets Programming • The package java. net provides support for sockets programming (and more). • Typically you import everything defined in this package with: import java. net. *; Netprog: Java Sockets 1

Classes Inet. Address Socket Server. Socket Datagram. Packet Netprog: Java Sockets 2

Classes Inet. Address Socket Server. Socket Datagram. Packet Netprog: Java Sockets 2

Inet. Address class • static methods you can use to create new Inet. Address

Inet. Address class • static methods you can use to create new Inet. Address objects. – get. By. Name(String host) – get. Local. Host() Inet. Address x = Inet. Address. get. By. Name( “monte. cs. rpi. edu”); Netprog: Java Sockets 3

Sample Code: Lookup. java • Uses Inet. Address class to lookup hostnames found on

Sample Code: Lookup. java • Uses Inet. Address class to lookup hostnames found on command line. > java Lookup monte www. yahoo. com monte: 128. 213. 8. 110 www. yahoo. com: 64. 58. 76. 176 Netprog: Java Sockets 4

try { Inet. Address a = Inet. Address. get. By. Name(hostname); System. out. println(hostname

try { Inet. Address a = Inet. Address. get. By. Name(hostname); System. out. println(hostname + ": " + a. get. Host. Address()); } catch (Unknown. Host. Exception e) { System. out. println("No address found for " + hostname); } Netprog: Java Sockets 5

Socket class • Corresponds to active TCP sockets only! – client sockets – socket

Socket class • Corresponds to active TCP sockets only! – client sockets – socket returned by accept(); • Passive sockets are supported by a different class: Server. Socket • UDP sockets are supported by Datagram. Socket Netprog: Java Sockets 6

Socket Constructors • Constructor creates a TCP connection to a named TCP server. –

Socket Constructors • Constructor creates a TCP connection to a named TCP server. – There a number of constructors: Socket(Inet. Address server, int port); Socket(Inet. Address server, int port, Inet. Address local, int localport); Socket(String hostname, int port); Netprog: Java Sockets 7

Socket Methods void close(); Inet. Address get. Inet. Address(); getpeername Inet. Address get. Local.

Socket Methods void close(); Inet. Address get. Inet. Address(); getpeername Inet. Address get. Local. Address(); getsockname Input. Stream get. Input. Stream(); Output. Stream get. Output. Stream(); • Lots more (setting/getting socket options, partial close, etc. ) Netprog: Java Sockets 8

Socket I/O • Socket I/O is based on the Java I/O support (in the

Socket I/O • Socket I/O is based on the Java I/O support (in the package java. io). • Input. Stream and Output. Stream are abstract classes – common operations defined for all kinds of Input. Streams, Output. Streams… Netprog: Java Sockets 9

Input. Stream Basics // reads some number of bytes and // puts in buffer

Input. Stream Basics // reads some number of bytes and // puts in buffer array b int read(byte[] b); // reads up to len bytes int read(byte[] b, int off, int len); Both methods can throw IOException. Both return – 1 on EOF. Netprog: Java Sockets 10

Output. Stream Basics // writes b. length bytes void write(byte[] b); // writes len

Output. Stream Basics // writes b. length bytes void write(byte[] b); // writes len bytes starting // at offset off void write(byte[] b, int off, int len); Both methods can throw IOException. Netprog: Java Sockets 11

Server. Socket Class (TCP Passive Socket) • Constructors: Server. Socket(int port); Server. Socket(int port,

Server. Socket Class (TCP Passive Socket) • Constructors: Server. Socket(int port); Server. Socket(int port, int backlog, Inet. Address bind. Addr); Netprog: Java Sockets 12

Server. Socket Methods Socket accept(); void close(); Inet. Address get. Inet. Address(); int get.

Server. Socket Methods Socket accept(); void close(); Inet. Address get. Inet. Address(); int get. Local. Port(); throw IOException, Security. Exception Netprog: Java Sockets 13

Sample Echo Server TCPEcho. Server. java Simple TCP Echo server. Based on code from:

Sample Echo Server TCPEcho. Server. java Simple TCP Echo server. Based on code from: TCP/IP Sockets in Java Netprog: Java Sockets 14

UDP Sockets • Datagram. Socket class • Datagram. Packet class needed to specify the

UDP Sockets • Datagram. Socket class • Datagram. Packet class needed to specify the payload (incoming or outgoing). Netprog: Java Sockets 15

Datagram. Socket Constructors Datagram. Socket(); Datagram. Socket(int port, Inet. Address a); All can throw

Datagram. Socket Constructors Datagram. Socket(); Datagram. Socket(int port, Inet. Address a); All can throw Socket. Exception or Security. Exception. Netprog: Java Sockets 16

Datagram Methods void connect(Inet. Address, int port); void close(); void receive(Datagram. Packet p); void

Datagram Methods void connect(Inet. Address, int port); void close(); void receive(Datagram. Packet p); void send(Datagram. Packet p); Lots more! Netprog: Java Sockets 17

Datagram. Packet • Contain the payload (a byte array). • Can also be used

Datagram. Packet • Contain the payload (a byte array). • Can also be used to specify the destination address (when not using connected mode UDP). Netprog: Java Sockets 18

Datagram. Packet Constructors For receiving: Datagram. Packet( byte[] buf, int len); For sending: Datagram.

Datagram. Packet Constructors For receiving: Datagram. Packet( byte[] buf, int len); For sending: Datagram. Packet( byte[] buf, int len Inet. Address a, int port); Netprog: Java Sockets 19

Datagram. Packet methods byte[] get. Data(); void set. Data(byte[] buf); destination address void set.

Datagram. Packet methods byte[] get. Data(); void set. Data(byte[] buf); destination address void set. Address(Inet. Address a); void set. Port(int port); Inet. Address get. Address(); could be either int get. Port(); address (depends on context) Netprog: Java Sockets 20

Sample UDP code UDPEcho. Server. java Simple UDP Echo server. Test using nc as

Sample UDP code UDPEcho. Server. java Simple UDP Echo server. Test using nc as the client (netcat): > nc –u hostname port Netprog: Java Sockets 21