Dear All, The following program uses socket. How can I convert it to servlet? Please help. Thank you. Yours Sincerely, TEH import java.io.*; import java.net.*; import java.awt.*; import java.awt.event.*; public class Exercise18_3Server { // Declare a random access file RandomAccessFile raf = null; public static void main(String args[]) { new Exercise18_3Server(); } public Exercise18_3Server() { // Open the local file on the server side try { // Open the file if the file exists, create a new file if the file does not exist raf = new RandomAccessFile("student.dat", "rw"); } catch(IOException e) { System.out.print("Error: " + e); System.exit(0); } // Establish server socket try { // Create a server socket ServerSocket ss = new ServerSocket(8000); int count = 1; ThreadGroup tg = new ThreadGroup("serving clients"); while (true) { if (tg.activeCount() < 2) { // Connect to a client Socket s = ss.accept(); // Start a new thread to register a client Thread t = new Thread(tg, new RegistrationThread(s, count++)); t.start(); System.out.println(tg.activeCount() + " active threads"); } else { try {Thread.sleep(200); } catch (InterruptedException ex) { } } } } catch (IOException e) { System.err.println(e); } } // Define a thread to process the client registration class RegistrationThread extends Thread { private Socket sock; // The socket to serve a client private int num; //the socket label // The file to store the records // Buffer reader to get input from the client private BufferedReader in; private PrintWriter out; public RegistrationThread(Socket sock, int num) { this.sock = sock; this.num = num; System.out.println("Thread " + num + " running"); // Create an input stream to receive data from a client try { in = new BufferedReader (new InputStreamReader(sock.getInputStream())); out = new PrintWriter(sock.getOutputStream(), true); } catch(IOException ex) { System.out.println("Error " + ex); } } public void run() { String name; String street; String city; String state; String zip; try { // Get command String command = in.readLine(); if (command.equals("Register")) { // Receive data from the client name = new String(in.readLine()); street = new String(in.readLine()); city = new String(in.readLine()); state = new String(in.readLine()); zip = new String(in.readLine()); // Display data received System.out.println("The following data received from the client"); System.out.println("name: " + name); System.out.println("street: " + street); System.out.println("city: " + city); System.out.println("state: " + state); System.out.println("zip: " + zip); // Create a student instance Student s = new Student(name, street, city, state, zip); // Append it to "student.dat" raf.seek(raf.length()); s.writeStudent(raf); } else if (command.equals("View")) { name = new String(in.readLine()); Student s = search(name); if (s == null) { out.println("not found"); } else { out.println("found"); out.println(s.getStreet()); out.println(s.getCity()); out.println(s.getState()); out.println(s.getZip()); } } } catch (IOException e) { System.err.println(e);} } public Student search(String name) { Student s = new Student(); try { raf.seek(0); long length = raf.length(); while (raf.getFilePointer() < length) { s.readStudent(raf); if (name.trim().equals(s.getName().trim())) return s; System.out.println("Find anything?" + name + " " + s.getName()); } } catch(IOException ex) { System.out.print("Error: " + ex); } return null; } } class Student { private String name; private String street; private String city; private String state; private String zip; // The size of five string fields in the record final int NAME_SIZE = 32; final int STREET_SIZE = 32; final int CITY_SIZE = 20; final int STATE_SIZE = 2; final int ZIP_SIZE = 5; // The total size of the record in bytes, a Unicode // character is 2 bytes size.*/ final int RECORD_SIZE = (NAME_SIZE + STREET_SIZE + CITY_SIZE + STATE_SIZE + ZIP_SIZE); Student() { } Student(String name, String street, String city, String state, String zip ) { this.name = name; this.street = street; this.city = city; this.state = state; this.zip = zip; } public String getName() { return name; } public String getStreet() { return street; } public String getCity() { return city; } public String getState() { return state; } public String getZip() { return zip; } public void writeStudent(DataOutput out) throws IOException { FixedLengthStringIO.writeFixedLengthString( name, NAME_SIZE, out); FixedLengthStringIO.writeFixedLengthString( street, STREET_SIZE, out); FixedLengthStringIO.writeFixedLengthString( city, CITY_SIZE, out); FixedLengthStringIO.writeFixedLengthString( state, STATE_SIZE, out); FixedLengthStringIO.writeFixedLengthString( zip, ZIP_SIZE, out); } public void readStudent(DataInput in) throws IOException { name = FixedLengthStringIO.readFixedLengthString( NAME_SIZE, in); street = FixedLengthStringIO.readFixedLengthString( STREET_SIZE, in); city = FixedLengthStringIO.readFixedLengthString( CITY_SIZE, in); state = FixedLengthStringIO.readFixedLengthString( STATE_SIZE, in); zip = FixedLengthStringIO.readFixedLengthString( ZIP_SIZE, in); } } }
Fussy? Opinionated? Impossible to please? Perfect. Join Yahoo!'s user panel and lay it on us.http://us.rd.yahoo.com/evt=48516/*http://surveylink.yahoo.com/gmrs/yahoo_panel_invite.asp?a=7 hot CTA = Join Yahoo!'s user panel