+ All Categories
Home > Documents > Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and...

Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and...

Date post: 06-Sep-2018
Category:
Upload: vodiep
View: 234 times
Download: 0 times
Share this document with a friend
27
Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p. 1/27
Transcript
Page 1: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

Java Sockets APIand

Java ThreadsNovember 19, 2004

Java Socket API & Java Threads - 2004-11-19 – p. 1/27

Page 2: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

Outline

Java Socket API

low level API: addresses, sockets,

interfaces

high level API: URI, URL, connections

Java Threads

synchonization

Java Socket API & Java Threads - 2004-11-19 – p. 2/27

Page 3: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

Java Socket - low level APISocket

TCP client APIis used to connect to a remote host

ServerSocket:TCP server APIis used to accept connections from client sockets.

DatagramSocket

UDP endpoint APIis used to send, and receive, DatagramPackets.

MulticastSocket

subclass of the DatagramSocket used whendealing with multicast groups.

Java Socket API & Java Threads - 2004-11-19 – p. 3/27

Page 4: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

ServerSocket - ConstructorsServerSocket()Creates an unbound server socket.

ServerSocket(int port)Creates a server socket, bound to the specified port.

ServerSocket(int port, int backlog)Creates a server socket and binds it to the specifiedlocal port number, with the specified backlog.

ServerSocket(int port, int backlog,InetAddress bindAddr)|

Create a server with the specified port, listen backlog,and local IP address to bind to.

Java Socket API & Java Threads - 2004-11-19 – p. 4/27

Page 5: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

ServerSocket - Methods

Socket accept(): Listens for a connection to bemade to this socket and accepts it.

void bind(SocketAddress endpoint): Binds theServerSocket to a specific address (IP address and portnumber).

void bind(SocketAddress endpoint,int backlog}

Binds the ServerSocket to a specific address (IPaddress and port number).

void close(): Closes this socket.

Java Socket API & Java Threads - 2004-11-19 – p. 5/27

Page 6: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

ServerSocket - Methods (cont)InetAddress getInetAddress(): Returns the localaddress of this server socket.

int getLocalPort(): Returns the port on which thissocket is listening.

SocketAddress getLocalSocketAddress():Returns the address of the endpoint this socket isbound to, or null if it is not bound yet.

boolean isBound(): Returns the binding state of theServerSocket.

boolean isClosed(): Returns the closed state ofthe ServerSocket.

Java Socket API & Java Threads - 2004-11-19 – p. 6/27

Page 7: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

ServerSocket - Methods (cont)int getReceiveBufferSize(): Gets the value ofthe SO_RCVBUF option for this ServerSocket, that is theproposed buffer size that will be used for Socketsaccepted from this ServerSocket.

void setReceiveBufferSize(int size): Sets adefault proposed value for the SO_RCVBUF option forsockets accepted from this ServerSocket.

boolean getReuseAddress(): Tests ifSO_REUSEADDR is enabled.

void setReuseAddress(boolean on):Enable/disable the SO_REUSEADDR socket option.

Java Socket API & Java Threads - 2004-11-19 – p. 7/27

Page 8: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

ServerSocket - Methods (cont)

int getSoTimeout(): Retrive setting forSO_TIMEOUT.

void setSoTimeout(int timeout):Enable/disable SO_TIMEOUT with the specified timeout,in milliseconds.

Java Socket API & Java Threads - 2004-11-19 – p. 8/27

Page 9: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

InetAddress - Methodsbyte[] getAddress(): Returns the raw IP addressof this InetAddress object.

static InetAddress[]getAllByName(String host)|Given the name of a host, returns an array of its IPaddresses, based on the configured name service onthe system.

static InetAddressgetByAddress(byte[] addr)|

static InetAddressgetByAddress(String host, byte[] addr)

Java Socket API & Java Threads - 2004-11-19 – p. 9/27

Page 10: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

InetAddress - Methods (cont)static InetAddress getByName(String host):Determines the IP address of a host, given the host’sname.

String getCanonicalHostName(): Gets the fullyqualified domain name for this IP address.

String getHostAddress(): Returns the IP addressstring in textual presentation.

String getHostName(): Gets the host name for thisIP address.

static InetAddress getLocalHost(): Returnsthe local host.

Java Socket API & Java Threads - 2004-11-19 – p. 10/27

Page 11: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

InetAddress - Methods (cont)boolean isAnyLocalAddress()boolean isLinkLocalAddress()boolean isLoopbackAddress()boolean isMCGlobal()boolean isMCLinkLocal()boolean isMCNodeLocal()boolean isMCOrgLocal()boolean isMCSiteLocal()boolean isMulticastAddress()boolean isReachable(int timeout)boolean isReachable(NetworkInterface netif,

int ttl, int timeout)boolean isSiteLocalAddress()

Java Socket API & Java Threads - 2004-11-19 – p. 11/27

Page 12: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

Socket - ConstructorsSocket()

Socket(InetAddress address, int port):Creates a stream socket and connects it to thespecified port number at the specified IP address.

Socket(InetAddress address, int port,InetAddress localAddr, int localPort)

Creates a socket and connects it to the specifiedremote address on the specified remote port.

Socket(Proxy proxy)

Socket(String host, int port): Creates astream socket and connects it to the specified portnumber on the named host.

Socket(String host, int port,InetAddress localAddr, int localPort)

Java Socket API & Java Threads - 2004-11-19 – p. 12/27

Page 13: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

Socket - Methodvoid bind(SocketAddress bindpoint)

void connect(SocketAddress endpoint)void connect(SocketAddress endpoint,

int timeout)

void close()void shutdownInput()void shutdownOutput()

Java Socket API & Java Threads - 2004-11-19 – p. 13/27

Page 14: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

Socket - Method (cont)InetAddress getInetAddress()int getPort()InetAddress getLocalAddress()int getLocalPort()SocketAddress getLocalSocketAddress()SocketAddress getRemoteSocketAddress()

InputStream getInputStream()OutputStream getOutputStream()void sendUrgentData(int data)

Java Socket API & Java Threads - 2004-11-19 – p. 14/27

Page 15: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

Socket - Method (cont)boolean getKeepAlive()void setKeepAlive(boolean on)boolean getOOBInline()void setOOBInline(boolean on)

int getReceiveBufferSize()void setReceiveBufferSize(int size)int getSendBufferSize()void setSendBufferSize(int size)

Java Socket API & Java Threads - 2004-11-19 – p. 15/27

Page 16: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

Socket - Method (cont)boolean getReuseAddress()void setReuseAddress(boolean on)int getSoLinger()void setSoLinger(boolean on, int linger)int getSoTimeout()void setSoTimeout(int timeout)boolean getTcpNoDelay()void setTcpNoDelay(boolean on)int getTrafficClass()void setTrafficClass(int tc)

Java Socket API & Java Threads - 2004-11-19 – p. 16/27

Page 17: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

Socket - Method (cont)boolean isBound()boolean isClosed()boolean isConnected()boolean isInputShutdown()boolean isOutputShutdown()

Java Socket API & Java Threads - 2004-11-19 – p. 17/27

Page 18: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

DatagramSocket - ConstructorsDatagramSocket(): Constructs a datagram socketand binds it to any available port on the local hostmachine.

DatagramSocket(int port): Constructs adatagram socket and binds it to the specified port onthe local host machine.

DatagramSocket(int port,InetAddress laddr)

Creates a datagram socket, bound to the specified localaddress.

DatagramSocket(SocketAddress bindaddr):Creates a datagram socket, bound to the specified localsocket address.

Java Socket API & Java Threads - 2004-11-19 – p. 18/27

Page 19: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

DatagramSocket - Methodsvoid bind(SocketAddress addr)void close()void connect(InetAddress address, int port)void connect(SocketAddress addr)void disconnect()

Java Socket API & Java Threads - 2004-11-19 – p. 19/27

Page 20: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

DatagramSocket - Methodsvoid receive(DatagramPacket p)void send(DatagramPacket p)

boolean getBroadcast()void setBroadcast(boolean on)

boolean isBound()boolean isClosed()boolean isConnected()

Java Socket API & Java Threads - 2004-11-19 – p. 20/27

Page 21: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

DatagramPacket - ConstructorsDatagramPacket(byte[] buf, int length)Constructs a DatagramPacket for receiving packets oflength length.

DatagramPacket(byte[] buf, int length,InetAddress address, int port)

Constructs a datagram packet for sending packets oflength length to the specified port number on thespecified host.

DatagramPacket(byte[] buf, int offset,int length)

Constructs a DatagramPacket for receiving packets oflength length, specifying an offset into the buffer.

Java Socket API & Java Threads - 2004-11-19 – p. 21/27

Page 22: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

DatagramPacket - Constructors(cont)

DatagramPacket(byte[] buf, int offset,int len, InetAddress addr,int port)

Constructs a datagram packet for sending packets oflength length with offset offset to the specified portnumber on the specified host.

DatagramPacket(byte[] buf, int offset,int len, SocketAddress addr)

DatagramPacket(byte[] buf, int len,SocketAddress addr)

Java Socket API & Java Threads - 2004-11-19 – p. 22/27

Page 23: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

Other componentsURI is the class representing a Universal ResourceIdentifier, as specified in RFC 2396. As the nameindicates, this is just an Identifier and doesn’t providedirectly the means to access the resource.

URL is the class representing a Universal ResourceLocator, which is both an older concept for URIs and amean to access the resources.

URLConnection is created from a URL and is thecommunication link used to access the resource pointedby the URL. This abstract class will delegate most of thework to the underlying protocol handlers like http or ftp.

HttpURLConnection is a subclass ofURLConnection and provides some additionalfunctionalities specific to the HTTP protocol.

Java Socket API & Java Threads - 2004-11-19 – p. 23/27

Page 24: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

“There are two ways of constructing a softwaredesign; one way is to make it so simple that thereare obviously no deficiencies, and the other way isto make it so complicated that there are no obviousdeficiencies. The first method is far more difficult.” –C. A. R. Hoare

Java Socket API & Java Threads - 2004-11-19 – p. 24/27

Page 25: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

Syncronization

Mutual Exclusion Locks: mutex

Semaphores (E. W. Dijkstra)

Monitors (C. A. R. Hoare)

Java Socket API & Java Threads - 2004-11-19 – p. 25/27

Page 26: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

Java suport for threading

class Thread

interface Runnable

synchronized

wait()

notify, notifyAll()

Java Socket API & Java Threads - 2004-11-19 – p. 26/27

Page 27: Java Sockets API Java Threadsrazvanm/600.120/JavaSockets+Threads-2004... · Java Sockets API and Java Threads November 19, 2004 Java Socket API & Java Threads - 2004-11-19 – p.

... to be continued.

Java Socket API & Java Threads - 2004-11-19 – p. 27/27


Recommended