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
