Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Network Programming Introduction Based on Classes in the java.net package Lecture focuses on: TCP and UDP Network programming basics Identifying a machine Servers and Clients Ports and sockets Data transfer using sockets 1 TCP and UDP Lots of java programs use Transmission Control Protocol (TCP) Connection-based (where java stream sockets provides continuous data stream), reliable, data streams will always get there. Also high overhead. We will focus on TCP/IP sockets. User Datagram Protocol (UDP) is not connection-based (connectionless service with datagram sockets allowing one message, an unreliable protocol which is much faster, but the message won’t always get there Network Programming Basics •The classes in java.net: Java programs can use TCP or UDP to communicate over the Internet. The URL, URLConnection (for Web applications), Socket, and ServerSocket (client-server applications) classes all use TCP to communicate over the network. •The DatagramPacket, DatagramSocket, and MulticastSocket classes are for use with UDP. Network Programming Basics Historically error-prone, difficult, complex JAVA has complete network package, java.net I/O stream library works quite well for TCP/IP Threading is also very useful and relatively easy here Identifying a Machine Uniquely identify a machine from all the others in the world IP (Internet Protocol) address that can exist in two forms: Identify a Machine (Continue) DNS(Domain Name Service) form java.sun.com “Dotted quad” form: 123.255.28.120 static InetAddress.getByName() produces java object containing address Servers and Clients Two machines must connect Server waits for connection Client initiates connection (create socket) Once the connection is made, server & client look identical Testing w/o a network For testing your program, you can do it w/o network. (server & client on same machine) Localhost: the IP address for testing without a network Three ways to identify: Test w/o networking (Continue) InetAddress addr=InetAddress.getByName(null); Equivalently: InetAddress.getByName(“localhost”); Or using the reserved IP number for the loopback: InetAddress.getByName(“127.0.0.1”); Port number IP address isn’t enough to identify a unique server many servers can exist on one machine port number: Unique in a Machine Not a physical location, but a software abstraction to represent a service Port number (Continue) When set up client and server, you must specify IP address and port. Port number range: 0 to 65,535 1-1024 are reserved, others may be used. Sockets Software abstraction used to represent the connection between two machines Socket is the actual 2way connector. Sockets The following sequence establishes a socket from the client class InetAddress addr = InetAddress.getByName(null); Socket socket = new Socket(addr, 8080); Sockets At the server class, the following establishes the server port, and waits for a client request to establish a socket ServerSocket s = new ServerSocket(8080); Socket socket = s.accept(); Data transfer using sockets Once you have a Socket, you call getInputStream() and getOutputStream() to produce the corresponding InputStream and OutputStream objects You can convert these to readers and writers, wrap them in a BufferedReader or BufferedWriter and PrintWriter Data transfer using sockets (continue) At the server and client classes BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream())); PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter( socket.getOutputStream())),true); Data transfer using sockets (continue) From then on, it’s like reading and writing any other I/O stream! while (true) { String str = in.readLine(); if (str.equals("END")) break; System.out.println("Echoing: " + str); out.println(str); } Example: JabberClient JabberServer