begin process at 2012 05 29 22:12:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Probleme sockets de mer**


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

Probleme sockets de mer**

lundi 14 avril 2003 à 22:37:30 | Probleme sockets de mer**

zzzzzz

Membre Club
bé je suis plus quoi faire j'en suis toujours au meme prob y'en a 1 qui me dit d'utiliser strstr() l'autre strcmp() fin bref ca serrais sympas si quelqun me donne le code qui recois les messages et qui verifie si la commande abcd est recu car le je sais plus koi faire merci ! (PS: Kaid j'ai justement remplacer accept par recvfrom() ca se compile mais la c encore pire ca m'avertie pas quand quelqun se connect et ca me fais ramer a mort

la definition de recvfrom pour Kaid

recvfrom()
La fonction recvfrom est presque identique à sendto(). Vous avez besoin d'utiliser SOCK_DGRAM lors de la création du socket(), comme pour le sendto(). recvfrom(socket, message, longueur, 0, sin, sizeof(sin)); Le sin sera celui du client qui vous aura envoyé un paquet. Notez que vous devrez configurer le sin comme si vous feriez un serveur régulier. Voir plus haut pour plus d'informations.

donc chez pas si c vraiment c fin bon je laiss tel quel

#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
#include <iostream.h>

int main()
{
SOCKET sock;
SOCKADDR_IN sin;
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);

sock = socket(AF_INET, SOCK_STREAM, 0);

sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_family = AF_INET;
sin.sin_port = htons(21452);

bind(sock, (LPSOCKADDR)&sin, sizeof(sin));
listen(sock, 0);
char *abcd = "abcd";
char *buf = "0";
char *buf2 = "1";

while(1)
{
recv(sock,buf2,sizeof(buf2),0);


SOCKADDR_IN s_from;

if((recvfrom(sock,buf2,sizeof(buf2),0,(LPSOCKADDR)&s_from,(int *)sizeof(&s_from)) != INVALID_SOCKET))
{
cout<<"Client connecter sur le port 21452\n"<<endl;
if (strcmp(buf,abcd)== 0) {
cout<<"Commande abcd Recu !\n";
}
}
}
return 0;
}

lundi 14 avril 2003 à 23:57:00 | Re : Probleme sockets de mer**

Kaid


Je t'ai pas dis que remplacer une fonction par une autre mais d'inverser les appels. Ton code devrait ressembler au code suivant (ni testé, ni compilé):


#include <windows.h>
#include <winsock2.h>
#include <iostream.h>
#include <assert.h>
#pragma comment(lib,"ws2_32.lib")

int main()
{
WSADATA WSAData;
assert(WSAStartup(MAKEWORD(2,0), &WSAData) == 0);

SOCKET sServeur=socket(AF_INET, SOCK_STREAM, 0);

SOCKADDR_IN addrServeur;
addrServeur.sin_addr.s_addr=INADDR_ANY;
addrServeur.sin_family=AF_INET;
addrServeur.sin_port=htons(21452);

bind(sServeur, (sockaddr*)&addrServeur, sizeof(addrServeur));

listen(sServeur, 5);

while(1)
{
SOCKADDR_IN addrClient;
int t_addrClient=sizeof(addrClient);

SOCKET sClient=accept(sServeur, (sockaddr*)&saddrClient, &t_addrClient);

char strBuf[128];
recv(sClient,strBuf,sizeof(strBuf),0);

// Ton test QUI MARCHE SEULEMENT SI TON SERVEUR ENVOIE LA CHAINE AVEC LE '\0' FINAL
// C'EST-A-DIRE TAILLE DE LA CHAINE DE CARACTERES + 1
if (strcmp(strBuf, "abcd")==0)
cout<<"Message reçu"<<endl;

closesocket(sClient);
}

return 0;
}



Kaid - kaid.fr.st

-------------------------------
Réponse au message :
-------------------------------

> bé je suis plus quoi faire j'en suis toujours au meme prob y'en a 1 qui me dit d'utiliser strstr() l'autre strcmp() fin bref ca serrais sympas si quelqun me donne le code qui recois les messages et qui verifie si la commande abcd est recu car le je sais plus koi faire merci ! (PS: Kaid j'ai justement remplacer accept par recvfrom() ca se compile mais la c encore pire ca m'avertie pas quand quelqun se connect et ca me fais ramer a mort
>
> la definition de recvfrom pour Kaid
>
> recvfrom()
> La fonction recvfrom est presque identique à sendto(). Vous avez besoin d'utiliser SOCK_DGRAM lors de la création du socket(), comme pour le sendto(). recvfrom(socket, message, longueur, 0, sin, sizeof(sin)); Le sin sera celui du client qui vous aura envoyé un paquet. Notez que vous devrez configurer le sin comme si vous feriez un serveur régulier. Voir plus haut pour plus d'informations.
>
> donc chez pas si c vraiment c fin bon je laiss tel quel
>
> #include <winsock2.h>
> #pragma comment(lib,"ws2_32.lib")
> #include <iostream.h>
>
> int main()
> {
> SOCKET sock;
> SOCKADDR_IN sin;
> WSADATA WSAData;
> WSAStartup(MAKEWORD(2,0), &WSAData);
>
> sock = socket(AF_INET, SOCK_STREAM, 0);
>
> sin.sin_addr.s_addr = INADDR_ANY;
> sin.sin_family = AF_INET;
> sin.sin_port = htons(21452);
>
> bind(sock, (LPSOCKADDR)&sin, sizeof(sin));
> listen(sock, 0);
> char *abcd = "abcd";
> char *buf = "0";
> char *buf2 = "1";
>
> while(1)
> {
> recv(sock,buf2,sizeof(buf2),0);
>
>
> SOCKADDR_IN s_from;
>
> if((recvfrom(sock,buf2,sizeof(buf2),0,(LPSOCKADDR)&s_from,(int *)sizeof(&s_from)) != INVALID_SOCKET))
> {
> cout<<"Client connecter sur le port 21452\n"<<endl;
> if (strcmp(buf,abcd)== 0) {
> cout<<"Commande abcd Recu !\n";
> }
> }
> }
> return 0;
> }
>
>
mardi 15 avril 2003 à 12:29:59 | Re : Probleme sockets de mer**

zzzzzz

Membre Club
aie meci je vais essayer d'y compiler mais tu peut m'expliquer c'est quoi le assert ?
mardi 15 avril 2003 à 12:33:27 | Re : Probleme sockets de mer**

Kaid

Tu peux pas regarder la MSDN pour le savoir ?

Kaid - kaid.fr.st

-------------------------------
Réponse au message :
-------------------------------

> aie meci je vais essayer d'y compiler mais tu peut m'expliquer c'est quoi le assert ?


Cette discussion est classée dans : socket, sin, sock, abcd, recvfrom


Répondre à ce message

Sujets en rapport avec ce message

PROB SOCKETS CON [ par zzzzzz ] le code source marche mais quand je rajoute un cout#include #pragma comment(lib,"ws2_32.lib")#include int main(void) PROBLEME CLIENT SERVER [ par zzzzzz ] Mon client marche c sur et il envoie bien abcd mais monserver marche po je suis debutant en server socket... :(je sais pas comment faire en sorte que Prob strcmp(); [ par zzzzzz ] c pour mon server en socket. Jaimerai que quand ya un message envoyer part le client si ce message c abcd ca ecrive Commande abcd Recu ! or je suis pe Probleme de Client Serveur [ par Krox68 ] voila jaimerais faire un programme client qui puisse se connecter a ce serveur : #include void main(){ WSADATA WSAData; WSAStartup(MAKEWORD(2,0), &WS LERREUR QUI TUE §§§§§§§§§§§§§§§§ [ par Avalon10101 ] Vla jai fé mon prog tout é juste mais ya une erreur que je narrive vraiment pas à comprendre ! :C:\Documents and Settings\Alex\Mes documents\Makefile. pb socket [ par surfeurnet ] voici mon programme qui a pour l'instant pour unique but de se connecter à un serveur :# include # include # pragma comment (lib,"w32_32.lib")char ip, [SOCKET]Tjrs le pb de recuperation du buffer recv() [ par enthaz ] Allez J me lance : ca fait des heures et des heures ke le newb ke je suischerche la solution :D un coté j ai un logiciel client ki envoie "coucou" sur Socket, quand tu nous tiens ... [ par enthaz ] Allez J me lance : ca fait des heures et des heures ke le newb ke je suischerche la solution :D un coté j ai un logiciel client ki envoie "coucou" sur prob sock [ par epoc ] voilà, g commencé la prog des socks en vc++, mais rien ne transitte alors que la connexion semble être bien effectuée, voilà le code :**************** erreur 10038 [ par made_in_france ] Hello ! j'ai un probleme avec la fonction bind de mon programme. En effet cette fonction me renvois l'erreur 10038 « attempted ». Est ce que quelqu'un


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 1,732 sec (3)

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