Multithreaded Socket
Concurrent client and server application can be built in java using the concept
of multi-threading which describe in my previous article. Concurrent server are
those that can process many clients at a time. In practically all the server are
multithreaded. These server allowed to give the response simultaneously of each
client so Clients need not wait for other clients to finish their interaction
with the server. In other words this called the parallel execution. A client
request arrives at the server it is accepted a new a thread is created for
handling the clients request.
Multithreaded Server code
- import java.net.*;
- import java.io.*;
- public class MyMultithreadedServer extends Thread {
- Socket client;
- public MyMultithreadedServer(Socket s) {
- client = s;
- start();
- }
- public void run() {
- try {
- OutputStream out = client.getOutputStream();
- InputStream in = client.getInputStream();
- PrintWriter pw = new PrintWriter(out, true);
- BufferedReader br = new BufferedReader(new InputStreamReader( in ));
- while (true) {
- String str = br.readLine();
- System.out.println("Reciving from client : " + str);
- pw.println("Message from server : " + str);
- }
- } catch (IOException e) {
- System.out.println(e);
- }
- }
- public static void main(String[] args) {
- try {
- ServerSocket ss = new ServerSocket(7);
- while (true) {
- Socket s = ss.accept();
- MyMultithreadedServer mmts = new MyMultithreadedServer(s);
- }
- } catch (IOException e) {
- System.out.println(e);
- }
- }
- }
Client code
- import java.net.*;
- import java.io.*;
- public class Client {
- public static void main(String[] args) {
- try {
- Socket s = new Socket(InetAddress.getLocalHost(), 7);
- OutputStream out = s.getOutputStream();
- InputStream in = s.getInputStream();
- PrintWriter pw = new PrintWriter(out, true);
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- BufferedReader br1 = new BufferedReader(new InputStreamReader( in ));
- while (true) {
- String str = br.readLine();
- pw.println(str);
- System.out.println(br1.readLine());
- }
- } catch (IOException e) {
- System.out.println(e);
- }
- }
- }
OUTPUT
This is the server output
The first client connect and output
The other new client is connected and output is following
URL class
Class URL represents a Uniform Resource Locator, a pointer to a "resource" on
the World Wide Web. It is standard way of locating resources on the Internet,
e.g www.google.com has some basic parts these part are list below.
Following fields of the URL
- Protocol name :
http/ftp/mailto, etc.
- Host:
www.google.com.
- Port: This is an option the attribute specified after the host name, for example
www.google.com:80.
- File: Name of the file to be
accessed for example
www.google.com/home.html.
- Reference: A URL may have
appended to it a "fragment", also known as a "ref" or a "reference". The fragment is indicated by the sharp sign character "#" followed by more characters. www.google.com/home#cs.
- Relative: An application can
also specify a "relative URL", which contains only enough information to reach the resource relative to another URL. Relative URLs are frequently
used within HTML pages.
For example, if the contents of the URL:http://java.sun.com/index.html contained within it the relative URL:FAQ.html
It would be a shorthand for:
http://java.sun.com/FAQ.html
Note: The URL class does not encode and
decode any URL components according to the escaping mechanism itself. And it is
the responsibility of the caller to encode any fields which need to be escaped
previous calling URL. And decode any field returned from URL. because URL has no
information about URL escaping .it does not recognize equivalence between the
encoded or decoded form of the same URL. For example, the two URLs.
Example
http://foo.com/hello world/
and
http://foo.com/hello%20world.
both are not considered equal to each other.
This code made by using URL class which provides by java in .net package. And in
this program we not use all the methods of URL class but we use some general
methods.
Example
- import java.net.*;
- import java.io.*;
- class MyURLClass {
- public static void main(String[] args) {
- try {
- URL u = new URL(args[0]);
- System.out.println("Protocol Name :" + u.getProtocol());
- System.out.println("Host Name :" + u.getHost());
- System.out.println("file Name :" + u.getFile());
- System.out.println("Port No :" + u.getPort());
- System.out.println("Reference Name :" + u.getRef());
- URLConnection uc = u.openConnection();
- InputStream in = uc.getInputStream();
- System.out.println("stream is created");
- BufferedReader br = new BufferedReader(new InputStreamReader( in ));
- String str = null;
- while ((str = br.readLine()) != null)
- System.out.println(str);
- br.close();
- } catch (MalformedURLException e) {
- System.err.println(e);
- } catch (IOException ie) {
- System.err.println(ie);
- }
- }
- }
OUTPUT
Resources