why u need smtp server..

Program just writes text to port and server receives it and replies to it

On Sun, Jul 4, 2010 at 2:01 AM, jitesh dundas <[email protected]> wrote:

> Hey,
>
> Have you looked at the Apache james smtp server. Understand the source
> code.
>
> I haven't looked at your complete code,but you might need a listener
> for each email sent/received with threading support.
>
> Mostly,we do use web-based functionalities and I  encourage you to do
> all. Please also do look at the apache web server code also for
> further details.
>
> Try to first implement a client program properly and then server details.
>
> Regards,
> Jitesh Dundas
>
> On 7/4/10, pavan kumar <[email protected]> wrote:
> > Prateek,
> >
> > Issue is not with server code but client code.
> >
> > This is what i did:
> >
> > I moved lines from 16 to 19
> >         ss = new Socket(InetAddress.getByName("Invictus-PC"),5100);
> >             output = new ObjectOutputStream(ss.getOutputStream());
> >             output.flush();
> > to
> >
> > jButton1ActionPerformed method and closed ObjectOutputStream and Socket
> > after processing the client request:
> >
> >  private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
> >      try {
> >      if( (jTextField1.getText().equalsIgnoreCase("")) ||
> > (jTextField1.getText().equalsIgnoreCase("")) ||
> > (jTextField1.getText().equalsIgnoreCase("")) )
> >      {
> >          JOptionPane.showMessageDialog(this,"Please fill out the details
> > properly");
> >      }
> >      else{
> >     *      Socket ss = new Socket("127.0.0.1",5100);
> >             output = new ObjectOutputStream(ss.getOutputStream());
> >             output.flush();
> > *     String s = new String();
> >      s =
> >
> jTextField1.getText()+","+jTextField2.getText()+","+jTextField3.getText();
> >      output.writeObject(s);
> >      jTextArea1.append("Message is being sent and the details are as
> > under:\n");
> >      jTextArea1.append("Message sent to server to be send to :
> > "+jTextField1.getText()+"\n");
> >      jTextArea1.append("Message subject is:
> "+jTextField2.getText()+"\n");
> >      jTextArea1.append("Actual Message is: "+jTextField3.getText()+"\n");
> >      jTextArea1.append("WAITING FOR REPLY........\n \n \n \n ");
> >      jTextArea1.setCaretPosition(jTextArea1.getText().length());
> >      *output.close();
> >      ss.close();*
> >      }}
> >       catch(Exception e){}
> >
> >     }
> > I believe program has to close connection with server port once it
> completes
> > sending the request.
> >
> > May be someone has better explanation
> >
> > On Sat, Jul 3, 2010 at 9:51 PM, Prateek Rawal.......
> > <[email protected]>wrote:
> >
> >> Hey everyone, i'm trying to develop a email program with client and
> >> server.
> >> The client will send the message containing the details:
> >> 1. To whom it should be send
> >> 2. Subject
> >> 3. Message Part
> >>
> >> This message will go to server which in turn will redirect it to the
> >> expected destination(the one contained in the "To" part of the message)
> >>
> >> I have written the code for both client and server which are as follows:
> >>
> >> CLIENT code(I have written it in NetBeans):
> >>
> >>
> >>    1. import java.io.*;
> >>    2. import java.net.*;
> >>    3. import javax.swing.JOptionPane;
> >>    4.
> >>    5. public class Client extends javax.swing.JFrame implements
> >>     Runnable {
> >>    6.
> >>    7.     /** Creates new form Client */
> >>    8.     public Client() {
> >>    9.         initComponents();
> >>    10.     }
> >>    11.     public void run(){
> >>    12.         ServerSocket ssoc;
> >>    13.         Socket ss,sen;
> >>    14.         try {
> >>    15.
> >>    16.             ss = new Socket(InetAddress.getByName("Invictus-PC"),
> >>    5100);
> >>    17.             output = new
> >>     ObjectOutputStream(ss.getOutputStream());
> >>    18.             output.flush();
> >>    19.             ssoc = new ServerSocket(5000);
> >>    20.
> >>    21.             while(true){
> >>    22.
> >>       1. sen = ssoc.accept();
> >>       2. input = new ObjectInputStream(sen.getInputStream());
> >>
> >>    23.             String s = (String) input.readObject();
> >>    24.             int i = s.indexOf(",",0);
> >>    25.             int j = s.indexOf(",",i+1);
> >>    26.             int k = s.indexOf(",",j+1);
> >>    27.             String s1 = s.substring(0,i);
> >>    28.             String s2 = s.substring(i+1,j);
> >>    29.             String s3 = s.substring(j+1);
> >>    30.             jTextArea2.append(
> >>    "New Message Recieved and the Details are as under:\n");
> >>    31.             jTextArea2.append("Message sent by: "+s1+"\n");
> >>    32.             jTextArea2.append("Message subject is: "+s2+"\n");
> >>    33.             jTextArea2.append("Actual message is: "+s3+
> >>    "\n \n \n \n");
> >>    34.
> >>
>  jTextArea2.setCaretPosition(jTextArea2.getText().length());
> >>    35.
> >>    36.             sen.close();
> >>    37.             input.close();
> >>    38.             }
> >>    39.         }
> >>    40.         catch(Exception e){
> >>    41.         e.printStackTrace();
> >>    42.         }
> >>    43.
> >>    44.     }
> >>    45.
> >>    46.
> >>    47.     @SuppressWarnings("unchecked")
> >>    48.
> >>    // <editor-fold defaultstate="collapsed" desc="Generated Code">
> >>
> >>    49.     private void initComponents() {
> >>    50.
> >>    51.         jTextField1 = new javax.swing.JTextField();
> >>    52.         jTextField2 = new javax.swing.JTextField();
> >>    53.         jTextField3 = new javax.swing.JTextField();
> >>    54.         jButton1 = new javax.swing.JButton();
> >>    55.         jButton2 = new javax.swing.JButton();
> >>    56.         jLabel1 = new javax.swing.JLabel();
> >>    57.         jLabel2 = new javax.swing.JLabel();
> >>    58.         jLabel3 = new javax.swing.JLabel();
> >>    59.         jScrollPane1 = new javax.swing.JScrollPane();
> >>    60.         jTextArea1 = new javax.swing.JTextArea();
> >>    61.         jScrollPane2 = new javax.swing.JScrollPane();
> >>    62.         jTextArea2 = new javax.swing.JTextArea();
> >>    63.         jLabel4 = new javax.swing.JLabel();
> >>    64.         jLabel5 = new javax.swing.JLabel();
> >>    65.
> >>    66.
> >>
> >> setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
> >>    67.         getContentPane().setLayout(null);
> >>    68.         getContentPane().add(jTextField1);
> >>    69.         jTextField1.setBounds(60, 30, 260, 50);
> >>    70.         getContentPane().add(jTextField2);
> >>    71.         jTextField2.setBounds(60, 100, 260, 40);
> >>    72.         getContentPane().add(jTextField3);
> >>    73.         jTextField3.setBounds(60, 160, 260, 140);
> >>    74.
> >>    75.         jButton1.setText("Send");
> >>    76.         jButton1.addActionListener(new
> >>     java.awt.event.ActionListener() {
> >>    77.             public void
> >>     actionPerformed(java.awt.event.ActionEvent evt) {
> >>    78.                 jButton1ActionPerformed(evt);
> >>    79.             }
> >>    80.         });
> >>    81.         getContentPane().add(jButton1);
> >>    82.         jButton1.setBounds(60, 340, 100, 30);
> >>    83.
> >>    84.         jButton2.setText("Reset");
> >>    85.         jButton2.addActionListener(new
> >>     java.awt.event.ActionListener() {
> >>    86.             public void
> >>     actionPerformed(java.awt.event.ActionEvent evt) {
> >>    87.                 jButton2ActionPerformed(evt);
> >>    88.             }
> >>    89.         });
> >>    90.         getContentPane().add(jButton2);
> >>    91.         jButton2.setBounds(220, 340, 100, 30);
> >>    92.
> >>    93.         jLabel1.setText("To:");
> >>    94.         getContentPane().add(jLabel1);
> >>    95.         jLabel1.setBounds(20, 20, 40, 50);
> >>    96.
> >>    97.         jLabel2.setText("Subject:");
> >>    98.         getContentPane().add(jLabel2);
> >>    99.         jLabel2.setBounds(10, 100, 50, 40);
> >>    100.
> >>    101.         jLabel3.setText("Message:");
> >>    102.         getContentPane().add(jLabel3);
> >>    103.         jLabel3.setBounds(10, 150, 46, 40);
> >>    104.
> >>    105.         jTextArea1.setColumns(20);
> >>    106.         jTextArea1.setRows(5);
> >>    107.         jScrollPane1.setViewportView(jTextArea1);
> >>    108.
> >>    109.         getContentPane().add(jScrollPane1);
> >>    110.         jScrollPane1.setBounds(500, 30, 380, 150);
> >>    111.
> >>    112.         jTextArea2.setColumns(20);
> >>    113.         jTextArea2.setRows(5);
> >>    114.         jScrollPane2.setViewportView(jTextArea2);
> >>    115.
> >>    116.         getContentPane().add(jScrollPane2);
> >>    117.         jScrollPane2.setBounds(500, 230, 380, 170);
> >>    118.
> >>    119.         jLabel4.setText("Sending Message Details:");
> >>    120.         getContentPane().add(jLabel4);
> >>    121.         jLabel4.setBounds(360, 30, 130, 150);
> >>    122.
> >>    123.         jLabel5.setText("Recieving Message Details:");
> >>    124.         getContentPane().add(jLabel5);
> >>    125.         jLabel5.setBounds(360, 230, 130, 170);
> >>    126.
> >>    127.         pack();
> >>    128.     }// </editor-fold>
> >>    129.
> >>    130.     private void
> >>     jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
> >>    131.     jTextField1.setText("");
> >>    132.     jTextField2.setText("");
> >>    133.     jTextField3.setText("");
> >>    134.     }
> >>    135.
> >>    136.     private void
> >>     jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
> >>    137.      try {
> >>    138.
> >>    139.      if( (jTextField1.getText().equalsIgnoreCase(""
> >>    )) || (jTextField1.getText().equalsIgnoreCase(""
> >>    )) || (jTextField1.getText().equalsIgnoreCase("")) )
> >>    140.      {
> >>    141.          JOptionPane.showMessageDialog(this,
> >>    "Please fill out the details properly");
> >>    142.      }
> >>    143.      else{
> >>    144.      String s = new String();
> >>    145.      s = jTextField1.getText()+","+jTextField2.getText()+","
> >>    +jTextField3.getText();
> >>    146.      output.writeObject(s);
> >>    147.      jTextArea1.append(
> >>    "Message is being sent and the details are as under:\n");
> >>    148.      jTextArea1.append("Message sent to server to be send to : "
> >>    +jTextField1.getText()+"\n");
> >>    149.      jTextArea1.append("Message subject is: "
> >>    +jTextField2.getText()+"\n");
> >>    150.      jTextArea1.append("Actual Message is: "
> >>    +jTextField3.getText()+"\n");
> >>    151.      jTextArea1.append("WAITING FOR REPLY........\n \n \n \n ");
> >>    152.      jTextArea1.setCaretPosition(jTextArea1.getText().length());
> >>    153.      }}
> >>    154.       catch(Exception e){}
> >>    155.
> >>    156.
> >>    157.     }
> >>    158.
> >>    159.
> >>    160.     public static void main(String args[]) {
> >>    161.         java.awt.EventQueue.invokeLater(new Runnable() {
> >>    162.             public void run() {
> >>    163.               Client u = new Client();
> >>    164.               u.setVisible(true);
> >>    165.               Thread t = new Thread(u);
> >>    166.               t.start();
> >>    167.             }
> >>    168.         });
> >>    169.     }
> >>    170.     ObjectOutputStream output;
> >>    171.     ObjectInputStream input;
> >>    172.     // Variables declaration - do not modify
> >>
> >>    173.     private javax.swing.JButton jButton1;
> >>    174.     private javax.swing.JButton jButton2;
> >>    175.     private javax.swing.JLabel jLabel1;
> >>    176.     private javax.swing.JLabel jLabel2;
> >>    177.     private javax.swing.JLabel jLabel3;
> >>    178.     private javax.swing.JLabel jLabel4;
> >>    179.     private javax.swing.JLabel jLabel5;
> >>    180.     private javax.swing.JScrollPane jScrollPane1;
> >>    181.     private javax.swing.JScrollPane jScrollPane2;
> >>    182.     private javax.swing.JTextArea jTextArea1;
> >>    183.     private javax.swing.JTextArea jTextArea2;
> >>    184.     private javax.swing.JTextField jTextField1;
> >>    185.     private javax.swing.JTextField jTextField2;
> >>    186.     private javax.swing.JTextField jTextField3;
> >>    187.     // End of variables declaration
> >>    188.
> >>    189. }
> >>
> >>
> >>
> >>
> >>
> >>
> >> SERVER Code:
> >>
> >>
> >>
> >>    1. import java.net.*;
> >>    2. import java.io.*;
> >>    3. import java.io.ObjectInputStream;
> >>    4. import java.io.ObjectOutputStream;
> >>    5.
> >>    6.
> >>    7. public class Server extends javax.swing.JFrame implements
> >>     Runnable {
> >>    8.
> >>    9.     /** Creates new form Server */
> >>    10.     public Server() {
> >>    11.         initComponents();
> >>    12.     }
> >>    13.     public void run(){
> >>    14.         ServerSocket ss;
> >>    15.         Socket s;
> >>    16.         try {
> >>    17.
> >>    18.           ss = new ServerSocket(5100,10);
> >>    19.             while(true){
> >>    20.
> >>    21.
> >>    22.             s = ss.accept();
> >>    23.
> >>    24.
> >>    25.             input = new ObjectInputStream(s.getInputStream());
> >>    26.
> >>    27.             String str = (String) input.readObject();
> >>    28.             int i = str.indexOf(",",0);
> >>    29.             int j = str.indexOf(",",i+1);
> >>    30.             int k = str.indexOf(",",j+1);
> >>    31.             String s1 = str.substring(0,i);
> >>    32.             String s2 = str.substring(i+1,j);
> >>    33.             String s3 = str.substring(j+1);
> >>    34.             jTextArea1.append("Message Recieved\n");
> >>    35.             jTextArea1.append("Details are as under:\n");
> >>    36.             jTextArea1.append("Message sent by: "
> >>    +s.getInetAddress()+"\n");
> >>    37.             jTextArea1.append("Message sent to: "+s1+"\n");
> >>    38.             jTextArea1.append("Message subject is: "+s2+"\n");
> >>    39.             jTextArea1.append("Actual Message is :"+s3+"\n");
> >>    40.             jTextArea1.append("Sending Message from: "
> >>    +s.getInetAddress()+" to: "+s1+"\n");
> >>    41.
> >>
>  jTextArea1.setCaretPosition(jTextArea1.getText().length());
> >>    42.             Socket another = new
> Socket(InetAddress.getByName(s1),
> >>    5000);
> >>    43.             ObjectOutputStream o1 = new
> >>     ObjectOutputStream(another.getOutputStream());
> >>    44.             String s4 = s.getInetAddress()+","+s2+","+s3;
> >>    45.             o1.writeObject(s4);
> >>    46.             jTextArea1.append("Message Send: "+s4+"\n");
> >>    47.
> >>    48.             s.close();
> >>    49.             another.close();
> >>    50.             input.close();
> >>    51.             o1.close();
> >>    52.             }
> >>    53.         }
> >>    54.         catch(Exception e){
> >>    55. e.printStackTrace();
> >>    56.         }
> >>    57.     }
> >>    58.
> >>    59.     /** This method is called from within the constructor to
> >>    60.      * initialize the form.
> >>    61.
> >>         * WARNING: Do NOT modify this code. The content of this method
> is
> >>    62.      * always regenerated by the Form Editor.
> >>    63.      */
> >>    64.     @SuppressWarnings("unchecked")
> >>    65.
> >>    // <editor-fold defaultstate="collapsed" desc="Generated Code">
> >>
> >>    66.     private void initComponents() {
> >>    67.
> >>    68.         jScrollPane1 = new javax.swing.JScrollPane();
> >>    69.         jTextArea1 = new javax.swing.JTextArea();
> >>    70.
> >>    71.
> >>
> >> setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
> >>    72.
> >>    73.         jTextArea1.setColumns(20);
> >>    74.         jTextArea1.setRows(5);
> >>    75.         jScrollPane1.setViewportView(jTextArea1);
> >>    76.
> >>    77.
> >>            getContentPane().add(jScrollPane1,
> >> java.awt.BorderLayout.CENTER);
> >>    78.
> >>    79.         pack();
> >>    80.     }// </editor-fold>
> >>    81.
> >>    82.     /**
> >>    83.     * @param args the command line arguments
> >>    84.     */
> >>    85.     public static void main(String args[]) {
> >>    86.         java.awt.EventQueue.invokeLater(new Runnable() {
> >>    87.             public void run() {
> >>    88.
> >>    89.                 Server u = new Server();
> >>    90.                 u.setVisible(true);
> >>    91.                 Thread t = new Thread(u);
> >>    92.                 t.start();
> >>    93.             }
> >>    94.         });
> >>    95.     }
> >>    96.     ObjectOutputStream output;
> >>    97.     ObjectInputStream input;
> >>    98.     // Variables declaration - do not modify
> >>    99.     private javax.swing.JScrollPane jScrollPane1;
> >>    100.     private javax.swing.JTextArea jTextArea1;
> >>    101.     // End of variables declaration
> >>    102.
> >>    103. }
> >>    104.
> >>
> >>
> >>
> >> I tried testing it on local machine,
> >> i run server and then client,
> >> after than i filled out the details in the client form, mentioning the
> >> localhost in the to field,
> >>
> >> For the first time,Client sends succesfully, Server also recieves
> >> Successfully and forwards it to the expected destination(in this case
> the
> >> localmachine) Successfully, and is recieved successfully at the
> >> client(which
> >> is reflected in the recieved message details textarea)
> >>
> >> But then when i do it for second time,Client sends succesfully, Server
> >> DOESNOT recieve it, and hence do not forward it, and hence message not
> >> received at the destination.
> >>
> >> THE PROBLEM is that the loop in the SERVER CODE runs only once(I don't
> >> know
> >> why is this so, im really frustated).
> >> Please help me pointing out where am i going wrong.
> >> Just run the code(after making the changes you told) and tell me why is
> >> the
> >> loop in the SERVER code runs only once(for the first time), I think that
> >> is
> >> the CORE PROBLEM........
> >> PLEASE HELP!
> >>
> >> --
> >> To post to this group, send email to
> >> [email protected]
> >> To unsubscribe from this group, send email to
> >> [email protected]<javaprogrammingwithpassion%[email protected]>
> <javaprogrammingwithpassion%[email protected]<javaprogrammingwithpassion%[email protected]>
> >
> >> For more options, visit this group at
> >> http://groups.google.com/group/javaprogrammingwithpassion?hl=en
> >
> >
> >
> >
> > --
> > Thanks,
> > Pawan.
> >
> > While one person hesitates because he feels inferior, another is busy
> making
> > mistakes and becoming superior.
> >
> > Henry C. Link
> >
> > --
> > To post to this group, send email to
> > [email protected]
> > To unsubscribe from this group, send email to
> > [email protected]<javaprogrammingwithpassion%[email protected]>
> > For more options, visit this group at
> > http://groups.google.com/group/javaprogrammingwithpassion?hl=en
>



-- 
Thanks,
Pawan.

While one person hesitates because he feels inferior, another is busy making
mistakes and becoming superior.

Henry C. Link

-- 
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/javaprogrammingwithpassion?hl=en

Reply via email to