begin process at 2010 03 12 22:24:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Linux

 > 

Réseau & Internet

 > 

RECV() TELNET


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

RECV() TELNET

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ée 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


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

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,733 sec (3)

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