I said read the source code of that server.try it. Iany case,that was a suggestion, don't use that if you don't want to.
Thanks for your response. I appreciate your feedback. Thanks, jd On 7/4/10, pavan kumar <[email protected]> wrote: > 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
