rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Socket C

Posté par senynium, le jeudi 4 septembre 2003 à 18:09:48
Slt la compagnie !!!
J'ai un super pb en c, au niveau des sockets. En fait sur le serveur, le programme ne continue pa apres le listen (pas d'entréé ds la boucle pour accepter les connections) mon code :

void main()
{



WSADATA WSAData;
(WSAStartup(MAKEWORD(2,0), &WSAData)

SOCKET sock;
SOCKET csock;
SOCKADDR_IN sin;
SOCKADDR_IN csin;

char *buffer = new char[255];
int i;

sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
sin.sin_family = AF_INET;
sin.sin_port = htons(2500);


if ((bind(sock, (SOCKADDR *)&sin, sizeof(sin))) == 0)
{ cout << "Bind" << endl ;}

if ((listen(sock, 3)) == 0)
{ cout << "Listen" << endl ;}

cout <<"Ecoute" <<endl;


Jusque là, tout marche bien et ensuite, plus rien.
J'ai ajouté le "cout " précédent pour verifier k'il n'y avait pa d'arret mais rien, la ligne produit l'affichage, et ce qui suit ne s'execute pa :


for(;;)
{
cout << "Entree de boucle";
int sinsize = sizeof(csin);
if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
{
recv(csock, buffer, sizeof(buffer), 0);
cout << "Salut " << *buffer;
}
else
{ cout << "Refus" << endl ;
exit(0);}
}

}

SVP, kelk'un pour m'aider et viiiiittttttte !!!!!!!!!!
Répondre à senynium  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mirza, le jeudi 4 septembre 2003 à 18:34:19
holala les sockets j'en ai fait y'a longtemps et j'ai oublié

par contre il te manque pas une boucle while ???

le code d'un serveur c'est toujours un truc du style:

while (1) // le serveur ne doit en theorrie JAMAIS s'arreter
{
socket = accept(...);
if (socket.valide)
liste.add(socket);
foreach (s in liste)
{
message = s.read(..);
printf("recu " + message + " de " + s);
}



}
Répondre à mirza

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
senynium, le jeudi 4 septembre 2003 à 19:31:27
Slt,
En fait, le pb n'est pas fonction de le boucle, car autant avec "While" (ton code) qu'avec "for"(le mien) ca ne marche pas
Répondre à senynium

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mirza, le vendredi 5 septembre 2003 à 08:40:11
très juste

désolé

j'avais lu trop vide ton code ...


A mon avis il manque un 'fork' (cf doc C) qui permet d'excecuter simultanement le code du pere (serveur) et des fils (vraies connexions des clients)
Répondre à mirza

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
senynium, le lundi 8 septembre 2003 à 13:46:58
Slt, j'arrive toujours pas à faire marcher.
En fait je ne trouve aucune documentation sur le "fork" comme indiqué.
SVP, indiquer moi un endroit ou trouver de la doc, sur le fork, et meme sur les sockets, ca urge !!!!!

PS : J'utilise Visual C++ pour mon developpement .
Répondre à senynium

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mirza, le lundi 8 septembre 2003 à 17:00:43
fork c'est en UNIX

en VC++ je crois que c'est CreateThread et les fonctions apparentées qu'il faut utiliser .
Répondre à mirza

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
toony, le mardi 9 septembre 2003 à 13:07:25
Il est tout a fait possible de développer un client/serveur en C & socket sans fork...
Je vais voir si je retrouve mon code et je vous l'envoie.

Tony
Répondre à toony

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
senynium, le mercredi 10 septembre 2003 à 13:50:56
Ce serait vraiment sympa
Tu pourrais egalement m'indiquer s'il est fonctionnel avec Visual C++ (, enfin sous windows).

J'attends ...
Répondre à senynium

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
chris, le mercredi 10 septembre 2003 à 14:43:39
Bonjour,

Je viens de tester ton programme (tel quel) avec Visual Studio 6.0 et je n'ai pas reproduit ton problème.
Le message "Entrée de boucle" s'affiche correctement et la fonction "accept" bloque en attendant (car ton socket est bloquant) une connexion. Un fonctionnement normal.
Si le message "Ecoute" s'affiche et pas "Entrée de boucle" quand tu exécutes ton programme, alors je ne peux pas t'aider.
Un petit conseil, essaie d'exécuter ton programme "pas à pas" pour bien comprendre ce qu'il se passe.

Bon courage.
Chris
Répondre à chris

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
senynium, le mercredi 24 septembre 2003 à 10:50:07
Salut,
pour vous dire merci à tous. J'ai gardé mon code et reinstallé mon système. Maintenant tout fonctionne bien.

Merci pour votre aide, c'était chouette !!!
Répondre à senynium

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ghaladon, le mardi 25 novembre 2003 à 11:35:08
salut

je cherche un code de client/serveur pour windows pourrais tu me doner des pistes sur ton programme?

merci d'avance
Répondre à ghaladon

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Senynium, le mercredi 26 novembre 2003 à 09:25:07
Salut,
le code que j'ai deposé est celui du serveur.
Les lignes avant la boucle for permettent d'initialiser le socket et le mettre à l'écoute. Pour ce qui est de la boucle, com tu t'en doutes, elle permet une execution continue.
J'aimerais plus t'aider mais il faudra que tu me dises ce que tu recherches exactement.
Si tu veux un cours sur les sockets, vois à cette adresse :
http://c.developpez.com/WalrusSock/
je crois que tu y trouveras ce que tu cherches
Répondre à Senynium
Discussions pertinentes trouvées dans le forum
16/07 14h12[Socket] Client Delphi vers Serveur Java2
19/07 22h48Socket carte mère2
07/05 23h12Socket carte mere7
09/10 16h57Socket , c et irc4
14/05 23h20Je cherche un socket CPU facile à monter1
Plus de discussions sur « Socket C »
Logiciels pertinents trouvés dans les téléchargements
Télécharger CCleaner 2.09.600CCleaner - CCleaner (Crap Cleaner) est un utilitaire de nettoyage gratuit permettant de garantir un respect de la vie privée en...Catégorie: Anonymat/Confidentialité
Licence: Freeware/gratuit
Télécharger Free Mp3 Wma Converter 2.0Free Mp3 Wma Converter - Free Mp3 Wma Converter permet de convertir tout vos fichiers Mp3 , Wma , Ogg , AAC , m4a , mp4 , Ape , flac, Wav : ...Catégorie: Conversion
Licence: Freeware/gratuit
Télécharger Vista Codec Package 4.7.2Vista Codec Package - Vista Codec Package regroupe une collection impressionnante de codecs (audio et vidéo), permettant d'ouvrir la plupart...Catégorie: Codecs
Licence: Freeware/gratuit
Télécharger PDF Creator 0.9.5PDF Creator - PDF Creator est un outil gratuit permettant de créer des PDF à partir de presque n'importe quelle application capable...Catégorie: PDF
Licence: Open Source
Plus de logiciels gratuits sur « Socket C »