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]>
>> 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

-- 
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