JDK Tutorials - Herong's Tutorial Examples - v6.32, by Herong Yang
SocketClient.java - A Simple Client Socket Application
This section provides a tutorial example on how to write a network application, SocketClient.java, that creates a client socket, connects to a remote socket server, sends and receives text messages.
Instead of using the telnet program, we can use the following simple client socket application to communicate with ReverseEchoer:
/* SocketClient.java * Copyright (c) HerongYang.com. All Rights Reserved. */ import java.io.*; import java.net.*; public class SocketClient { public static void main(String[] args) { BufferedReader in = new BufferedReader(new InputStreamReader( System.in)); PrintStream out = System.out; try { Socket c = new Socket("localhost",8888); printSocketInfo(c); BufferedWriter w = new BufferedWriter(new OutputStreamWriter( c.getOutputStream())); BufferedReader r = new BufferedReader(new InputStreamReader( c.getInputStream())); String m = null; while ((m=r.readLine())!= null) { out.println(m); m = in.readLine(); w.write(m,0,m.length()); w.newLine(); w.flush(); } w.close(); r.close(); c.close(); } catch (IOException e) { System.err.println(e.toString()); } } private static void printSocketInfo(Socket s) { System.out.println("Remote address = " +s.getInetAddress().toString()); System.out.println("Remote port = " +s.getPort()); System.out.println("Local socket address = " +s.getLocalSocketAddress().toString()); System.out.println("Local address = " +s.getLocalAddress().toString()); System.out.println("Local port = " +s.getLocalPort()); } }
Note that:
Now, run ReverseEchoer first, then run SocketClient in a separate command window. If you type in the same text as in the previous test, you will get the following output:
herong> java SocketClient.java Remote address = localhost/127.0.0.1 Remote port = 8888 Local socket address = /127.0.0.1:1073 Local address = /127.0.0.1 Local port = 1073 Welcome to Reverse Echo Server. Please type in some words. Fish, I love you and respect you very much. .hcum yrev uoy tcepser dna uoy evol I ,hsiF But I will kill you dead before this day ends. .sdne yad siht erofeb daed uoy llik lliw I tuB .
Note that socket constructor automatically picked up a free local port, 1073.
Table of Contents
Date, Time and Calendar Classes
Date and Time Object and String Conversion
Number Object and Numeric String Conversion
Locales, Localization Methods and Resource Bundles
Calling and Importing Classes Defined in Unnamed Packages
HashSet, Vector, HashMap and Collection Classes
Character Set Encoding Classes and Methods
Encoding Conversion Programs for Encoded Text Files
Establishing a Socket Communication Link
ReverseEchoer.java - A Simple Server Socket Application
►SocketClient.java - A Simple Client Socket Application
ReverseEchoServer.java - A Multi-Connection Socket Server
Binding Sockets to Specific Ports
Datagram Network Communication
DOM (Document Object Model) - API for XML Files
DTD (Document Type Definition) - XML Validation
XSD (XML Schema Definition) - XML Validation
XSL (Extensible Stylesheet Language)
Message Digest Algorithm Implementations in JDK
Private key and Public Key Pair Generation
PKCS#8/X.509 Private/Public Encoding Standards
Digital Signature Algorithm and Sample Program
"keytool" Commands and "keystore" Files
KeyStore and Certificate Classes
Secret Key Generation and Management
Cipher - Encryption and Decryption
The SSL (Secure Socket Layer) Protocol
SSL Socket Communication Testing Programs