begin process at 2010 02 10 08:40:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

Réseau & Internet

 > 

Socket et linux : serveur smtp


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Socket et linux : serveur smtp

mardi 20 juin 2006 à 15:48:51 | Socket et linux : serveur smtp

LuckyNut

Bonjour,

J'ai développé un petit serveur smtp sous linux et j'ai un pb que je n'arrive pas à résoudre.
Il marche nickel si je le fais écouter sur le port 2525.

Par contre quand je le fais écouter sur le port 25, je remarque qu'un client windows s'y prend à 2 fois pour se connecter (avec un seul appel de connect pourtant).
Ca marche très bien avec un client linux.

Vous avez une idée du problème ?
mardi 20 juin 2006 à 17:45:07 | Re : Socket et linux : serveur smtp

katsankat

Membre Club
L'appli est lancée par root ou un autre utilisateur?
mardi 20 juin 2006 à 18:02:11 | Re : Socket et linux : serveur smtp

LuckyNut

L'appli est lancée par root.

Ce que je trouve bizarre c'est qu'avec un client sous linux tout est ok.

Je pensais au début que ca venait d'inetd qui foutait le boxon mais il n'y a aucun smtp de configuré...
mardi 20 juin 2006 à 19:09:52 | Re : Socket et linux : serveur smtp

LuckyNut

Pour que ce soit plus clair, voici l'exemple de code du serveur :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <netdb.h>
#include <netinet/in.h>
#include <unistd.h>
#include <arpa/inet.h>


int main() {
 struct sockaddr_in SockLocale;
 
 int sock = socket(AF_INET, SOCK_STREAM, 0);
 if(sock==-1) exit(-1);
 
 memset(&SockLocale,0,sizeof(struct sockaddr_in));
 SockLocale.sin_family = AF_INET;
 SockLocale.sin_addr.s_addr = htonl(INADDR_ANY);
 SockLocale.sin_port = htons(25);

 if(bind(sock,(struct sockaddr*)&SockLocale,sizeof(struct sockaddr_in)) != -1) {
  if(listen(sock, 100)<0) {
   printf("Echec de Listen()\n");
   exit(-1);
  }
 }
 else {
  printf("echec de bind()\n");
  exit(-1);
 }
 
 while(1) {
  struct sockaddr_in SockDistant;
  char buffer[512];
  
  socklen_t TailleSock = sizeof(SockDistant);
  memset(&SockDistant,0,sizeof(struct sockaddr_in));
  int s_distant = accept(sock,(struct sockaddr*)&SockDistant,&TailleSock);
  if(s_distant!=-1) {
   printf("CONNEXION ETABLIE\r\n");
   strcpy(buffer,"Hello world !\r\n");
   write(s_distant,buffer,strlen(buffer));
   printf("Chaine \"Hello world !\" envoyée\r\n");
   close(s_distant);
  }
 }
}


Je teste en me connectant avec telnet :
Si je le mets sur le port 2525 (par ex), tout marche bien.
Sur le port 25, tout marche bien aussi à partir de linux.
Par contre, à partir de windows, j'obtiens (coté serveur) :

CONNEXION ETABLIE
Chaine "Hello world !" envoyée
CONNEXION ETABLIE
Chaine "Hello world !" envoyée

Vous voyez, il me l'affiche en double.
Je ne sais pas si ca ne vient pas la configuration de linux (debian) ou bien du programme.
Je ne comprends pas pourquoi ca marche avec telnet sous linux...



Cette discussion est classée dans : serveur, smtp, marche, linux, socket


Répondre à ce message

Sujets en rapport avec ce message

programmation socket sous linux [ par blazman34 ] Bonjour à tous !!Voici mon probleme :Je suis en train de programmer une application client serveur sous linux, tout a bien marcher juska présent juska Soket sous LINUX [ par diablo31170 ] Bonjour à tous le monde, comme le nom l'indique, cela va parler de soscket sous linux (en C++). Il aut savoir que je travaille en mode connecté. Je ch SOCKET ASYNCHRONE LINUX [ par nicompx ] Salut, Je cherche un exemple de communication par socket en C sous LINUX! J'aimerais que plusieurs client puissent laisser des messages au serveur, le [Socket] Connection serveur POP [ par LordBob ] Bonjour a tous,voila j'essai d'écrire une fonction qui me connecte à un serveur POP. voici donc mon code:[code]int iConnect(){    struct        hosten Recv bloque la première fois... [ par rom2n ] Bonjour à tous, je suis en train de programmer un jeu (rpg 2D avec direct3D) en réseau. J'ai structuré mon programme en différentes classes à savoir p Identifier un Client via Socket IP - C++ [ par Jeff_Trek ] Bonjour,J'utilise un Serveur (Socket IP), J'aimerais identifier les clients qui se connecte et déconnecte.Je connais les adresses IP des clients.Si Cl URGENT Plantage Serveur Socket IP [ par Jeff_Trek ] Bonjour J'utilise une application qui posséde en même temps une tache serveur Socket IP plus une tache cliente Socket IP.Lorsque un client se connecte FTP socket, je ne recois rien de la part du serveur [ par MuPuF ] Bonjour, j'essais de recoder des fonctions de wininet en socket, le probleme c'est que lors de ma connection au serveur ftp, il ne m'envois rien, alor envoyer un mail en VC++ par SMTP [ par amizak ] Bonjour tt le monde.je developpe un eapplication pour l'envoie des email avec VC++ en utilisant le protocole smtp.j'utilise ma machine en tant que ser Serveur [ par cht2000 ] Bonjour tout le monde,je cherche à faire un serveur, qui ecoute sur un socket, et qui m'indique le fichier que je viens de lui envoyer sur le socket.


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales