Download Socket

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Zero-configuration networking wikipedia , lookup

Remote Desktop Services wikipedia , lookup

IEEE 1355 wikipedia , lookup

Cracking of wireless networks wikipedia , lookup

Lag wikipedia , lookup

Real-Time Messaging Protocol wikipedia , lookup

Transcript
Prepared by Dr. Jiying Zhao
University of Ottawa
Canada
Socket Programming
 Sockets are interfaces that can "plug into" each other over a
network. Once so "plugged in", the programs so connected
communicate.
 Network communication can be done by exchanging some
data through transmitting that data in a message between a
socket in one process and another socket in another
process.
 When messages are sent, the messages are queued at the
sending socket until the underlying network protocol has
transmitted them. When they arrive, the messages are
queued at the receiving socket until the receiving process
makes the necessary calls to receive them.
Socket Programming
 An Internet socket is identified by the operating
system as a unique combination of the following:
 Protocol (TCP, UDP or raw IP)
 Local IP address
 Local port number
 Remote IP address (Only for established TCP sockets)
 Remote port number (Only for established TCP sockets)
Socket Programming
 Client-Server Model
 A client software process may initiate a communication
session, while the server waits for requests from any
client.
 Most business applications being written today use the
client-server model. So do the Internet's main
application protocols, such as HTTP, SMTP, Telnet,
DNS, etc.
Socket Programming
 Open-Read-Write-Close
 Before a user process can perform network operations, it
Opens a socket to specify and obtain permissions for the
network communication.
 Once a socket is opened, the user process makes one or
more calls to Read or Write data through the socket.
 After all transfer operations are complete, the user
process calls Close to inform the operating system that it
has finished using that socket.
Java Socket - Open
 Client
 class Socket

This class implements client sockets (also called just
"sockets").
 public Socket(InetAddress address, int port)
throws IOException
address - the IP address.
port - the port number.
Java Socket - Open
Socket MyClient;
try {
MyClient = new Socket("Machine name",
PortNumber);
}
catch (IOException e) {
System.out.println(e);
}
Java Socket – Open
 Server
 class ServerSocket

This class implements server sockets. A server socket waits for
requests to come in over the network. It performs some
operation based on that request, and then possibly returns a
result to the requester.
 public ServerSocket(int port)
throws IOException
port - the port number, or 0 to use any free port.
 public Socket accept()
throws IOException
Returns: the new Socket
Java Socket - Open
 On the client side:
ServerSocket MyService;
try {
MyServerice = new ServerSocket(PortNumber);
}
catch (IOException e) {
System.out.println(e);
}
 On the server side:
Socket serviceSocket = null;
try {
serviceSocket = MyService.accept();
}
catch (IOException e) {
System.out.println(e);
}
Java Socket - Read
 class DataInputStream
 A data input stream lets an application read primitive
Java data types from an underlying input stream in a
machine-independent way. An application uses a data
output stream to write data that can later be read by a
data input stream.
 public InputStream getInputStream()
throws IOException
Returns an input stream for this socket.
 public final String readLine()
throws IOException
Returns the next line of text from this input stream.
Java Socket - Read
 On the client side:
DataInputStream input;
try {
input = new DataInputStream(MyClient.getInputStream());
}
catch (IOException e) {
System.out.println(e);
}
 On the server side:
DataInputStream input;
try {
input = new DataInputStream(serviceSocket.getInputStream());
}
catch (IOException e) {
System.out.println(e);
}
Java Socket - Write
 class DataOutputStream
 A data output stream lets an application write primitive
Java data types to an output stream in a portable way. An
application can then use a data input stream to read the
data back in.
 public OutputStream getOutputStream()
throws IOException
Returns an output stream for writing bytes to this socket.
 public final void writeBytes(String s)
throws IOException
s - a string of bytes to be written.
Java Socket - Write
DataOutputStream output;
try {
output = new
dataOutputStream(MyClient.getOutputStream());
}
catch (IOException e) {
System.out.println(e);
}
Java Socket - Close
 public void close()
throws IOException
 Once a socket has been closed, it is not available for
further networking use (i.e. can't be reconnected or
rebound). A new socket needs to be created. If this
socket has an associated channel then the channel is
closed as well.
Java Socket - Close
 On the client side:
try {
output.close();
input.close();
MyClient.close();
}
catch (IOException e) { System.out.println(e); }
 On the server side:
try {
output.close();
input.close();
serviceSocket.close();
MyService.close();
}
catch (IOException e) {System.out.println(e);}
HDB3: High Density Bipolar 3
 Encoding:
 The encoding rules follow those for AMI, except that a
sequence of four consecutive 0's are encoding using a
special "violation" bit (V). This bit has the same polarity
as the last 1-bit which was sent using the AMI encoding
rule.
 When there are even 1-bits between two V bit, a
refinement is to encode the four bits as B00V, where B is
a balancing pulse. The value of B is assigned as + or - ,
which has the opposite polarity as the last 1-bit.
HDB3: High Density Bipolar 3
 Encoding
 Message: 1 0 0 0 0
1 0000 1 1 0000
1 1
 AMI:
+1 0 0 0 0 -1 0 0 0 0 +1 -1 0 0 0 0 +1 -1
 HDB3: +1 0 0 0 +V -1 0 0 0 -V +1 -1 +B 0 0 +V -1 +1
HDB3: High Density Bipolar 3
 Decoding:
 Finds all V bits; then converts “B00V” and “000V” to
“0000”.
 Converts -1 to 1.
Lab 2
 The input to the encoding program is a string of 0 and 1
from the keyboard.
 The input binary string will be encoded by the encoding
program to the HDB3 stream.
 The encoding program should send a “request-to-send”
message to the decoding program and waiting for a “clearto-send” message from the decoding program, before
sending.
 The decoding program will send a “clear-to-send” message
to the encoding program after receiving a “request-tosend” message from the encoding program.
Lab 2
 The HDB3 stream will be transmitted to the decoding
program through socket.
 After received the HDB3 stream, the decoding program will
acknowledge the receipt to the encoding program.
 Then the decoding program will decode the HDB3 stream
into its original format and print on the screen.
 The HDB3 stream is represented by the sequence of three
characters, “+”, “-” and “0”, respectively meaning the
positive pulse, negative pulse, and no-line-signal.