Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : RECV() TELNET [ Linux / Réseau & Internet ] (kiki67100)

jeudi 28 juin 2007 à 17:51:52 | RECV() TELNET

kiki67100

Bonjour j'ai fait un serveur en c++ Mais le probleme c'est que mon code lit le recv() de telnet caractere par caractere et moi je voudrais phrase par phrase voici le code

#include <winsock2.h>
#include <windows.h>
#include <iostream>



bool Insocket(long PORT)
{

WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKET csock;
SOCKET cs;
SOCKADDR_IN sin;
SOCKADDR_IN csin;
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr            = INADDR_ANY;
sin.sin_family        = AF_INET;
sin.sin_port                = htons(PORT);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));
listen(sock, 0);
char *msg=new char[1];
while(1)
{
int sinsize = sizeof(csin);
 cs=accept(sock,NULL,NULL);
 if (cs!=INVALID_SOCKET){
printf("Connection=>\n");
send(cs, "", 1, 0);
while ((recv(cs,msg,1,0))>0){
printf(msg);

}
}
}


}
int main()
{
Insocket(1000);
}

Le code m'affiche dans un printf de recv() donc caractere par caractere .Donc faire un while((*msg != '\n') Je sais pas comment mis prendre Jespere que vous pouriez maidé

Merci

Kevin

jeudi 28 juin 2007 à 18:08:55 | Re : RECV() TELNET

rrk275

deja : printf(msg); soit on n'a pas le meme c soit ce serait plutot printf("%c",msg[0]); ..
ensuite exprime clairement ton idee et tu trouveras :

"comment en ayant une fonction qui recoit caractere par caractere puis je lire phrase par phrase"

reflexion ... reflexion

il suffit de stocker les caracteres et lire la totalite de la chaine au moment opportun
( pas dur tout de meme .. )

conclusion :

( tu dis faire du c++ je te met donc des vector .. #include<vector>)

std::vector<char>msg;
msg.push_back(0);
 
while( recv(cs , msg[msg.size()-1] , 1 , 0 ) )
{
  if( msg[
msg.size()-1 ] == '\n')
    {
       //message recu
       msg.clear();
    }

   msg.push_back(0);
   
}

voila ..

rrk275

jeudi 28 juin 2007 à 18:43:54 | Re : RECV() TELNET

kiki67100

Désolé pour mavoir mal exprimé et merci pour ton aide Juste un dernier truc
Dev c++ me mais comme erreur 35 C:\Dev-Cpp\code.cpp invalid conversion from `char' to `char*'

Dans cette ligne while( recv(cs , msg[msg.size()-1] , 1 , 0 ) )

Merci

Kevin

jeudi 28 juin 2007 à 19:48:58 | Re : RECV() TELNET

max12

Administrateur CodeS-SourceS
Je suis pas le plus grand expert de l'histoire de l'humanité mais je dirais plutôt de prendre un tableau plutot qu'un vector car c'est un peu lourd à mon avis pour une opération quand même assez simpliste. Utiliser strstr() pour savoir quand le retour à la ligne arrive tout simplement et continuer d'accumuler dans le buffer si le retour est non trouvé. C'est ce que je fais et sa réussis assez bien .. :P

jeudi 28 juin 2007 à 20:19:57 | Re : RECV() TELNET
jeudi 28 juin 2007 à 23:55:53 | Re : RECV() TELNET

rrk275

Je ne vois pas trop l'interet du strstr quand au tableau on ne connait pas sa taille a l'avance ...

m'enfin tout depend de ce que l'on a compris du probleme ...

Pour kiki67100 il te dit que tu passes un nombre au lieu d'un pointeur ... un pointeur c'est une adresse, qui te permet de stocker donc d'ecrire pour transformer en pointeur ajoute & devant...
Louis



Cette discussion est classé dans : cs, socket, sin, sock, recv


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 sockets de mer** [ par zzzzzz ] 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 quel 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 :**************** Pb de socket 'winsock2.h' [ par amodels ] Bonjour tlm.Je voudrais éxécuter l'adresse http://127.0.0.1/toto.php avec ce code :#include #include #pragma comment(lib, "ws2_32.lib")void main(){WS 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...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.