2013-08-09 5 views
0

Le programme ci-dessous provoque ce problèmeconnexion Socket refusé dans le code client

ÉDITÉE:

import java.io.*; 
import java.net.*; 
public class smtpClient { 
    public static void main(String[] args) { 
// declaration section: 
// smtpClient: our client socket 
// os: output stream 
// is: input stream 
     Socket smtpSocket = null; 
     DataOutputStream os = null; 
     DataInputStream is = null; 
// Initialization section: 
// Try to open a socket on port 25 : step 1 
// Try to open input and output streams: step 2 
     try { 
      smtpSocket = new Socket("192.168.1.2", 1024); 
      os = new DataOutputStream(smtpSocket.getOutputStream()); 
      is = new DataInputStream(smtpSocket.getInputStream()); 
     } catch (UnknownHostException e) { 
      System.err.println("Don't know about host: hostname"); 
     } catch (IOException e) { 
      System.err.println("Couldn't get I/O for the connection to: hostname"); 
     } 
// If everything has been initialized then we want to write some data 
// to the socket we have opened a connection to on port 25 
    if (smtpSocket != null && os != null && is != null) { 
      try { 
// The capital string before each colon has a special meaning to SMTP 
// you may want to read the SMTP specification, RFC1822/3 
     os.writeBytes("HELO\n");  
       os.writeBytes("MAIL From: [email protected]\n"); 
       os.writeBytes("RCPT To: [email protected]\n"); 
       os.writeBytes("DATA\n"); 
       os.writeBytes("From: [email protected]\n"); 
       os.writeBytes("Subject: testing\n"); 
       os.writeBytes("Hi there\n"); // message body 
       os.writeBytes("\n.\n"); 
     os.writeBytes("QUIT"); 
// keep on reading from/to the socket till we receive the "Ok" from SMTP, 
// once we received that then we want to break. 
       String responseLine; 
       while ((responseLine = is.readLine()) != null) { 
        System.out.println("Server: " + responseLine); 
        if (responseLine.indexOf("Ok") != -1) { 
         break; 
        } 
       } 
// clean up: 
// close the output stream 
// close the input stream 
// close the socket 
       os.close(); 
       is.close(); 
       smtpSocket.close(); 
      } catch (UnknownHostException e) { 
       System.err.println("Trying to connect to unknown host: " + e); 
      } catch (IOException e) { 
       System.err.println("IOException: " + e); 
      } 
     } 
    }   
} 

journal de la console:

Couldn't get I/O for the connection to: hostname 

Le programme que je pris est de: http://www.javaworld.com/jw-12-1996/jw-12-sockets.html?page=4

J'ai déjà essayé de modifier le port de 25 à 1024
Je l'exécute sur mon PC local, donc je suis administrateur sur ce système, mais je ne sais pas s'il y a un problème de pare-feu par défaut (en cours d'exécution dans Eclipse sous Windows 7)

Selon vos commentaires ci-dessous: dois-je faire une listner, qui signifie dire un socket serveur, qui écoutera les requêtes client smtp

+3

Y at-il quelque chose qui écoute sur le port 1024 sur cette adresse IP? –

+1

juste se demandant - est-ce qu'il y a quelque chose qui écoute réellement sur ce port et IP spécifié? – evilruff

+0

1024 est le port réservé de toute façon ... – Zavior

Répondre

1

La réponse est: selon les détails que vous avez fournis, il n'y a pas d'écouteur en cours d'exécution ou de machine avec IP spécifié et numéro de port. UPD: alors vous essayez de vous connecter à un endroit où vous devez être sûr qu'il y a quelque chose qui écoute de l'autre côté, soit en écrivant votre propre code serveur ou en utilisant un serveur/code tiers pour fournir un certain service sur un numéro de port que vous essayez d'atteindre.

Pourquoi vous attendez-vous à ce qu'un serveur de messagerie s'exécute sur la machine avec l'adresse que vous avez fournie?

0

Cela ressemble à un autre programme utilise le port 1024.

Essayez un port différent.

Questions connexes