Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
763 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  reseaux et socket en c++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

reseaux et socket en c++

n°542808
drazor
Posté le 18-10-2003 à 11:59:47  profilanswer
 

quelqu'un serait -il  comment on fait pour programmer les sockets de façon simple c'est pour faire un petit logiciel de chat pour débuter.
merci

mood
Publicité
Posté le 18-10-2003 à 11:59:47  profilanswer
 

n°542809
schnapsman​n
Zaford Beeblefect
Posté le 18-10-2003 à 12:03:22  profilanswer
 

Drazor a écrit :

quelqu'un serait -il  comment on fait pour programmer les sockets de façon simple c'est pour faire un petit logiciel de chat pour débuter.
merci


 
ça veux dire quoi?
 
 
sinon sans blaguer il n'y a pas de lib de socket dans le standard c++, va falloir chercher dans des libs externes.


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°542815
nraynaud
lol
Posté le 18-10-2003 à 12:11:07  profilanswer
 

SchnapsMann a écrit :


va falloir chercher dans des libs externes.

Que t'as intéret à mapper sur les streams de C++ ou de faire en sorte que Taz ne soit jamais au courant.

n°542831
Taz
bisounours-codeur
Posté le 18-10-2003 à 13:02:31  profilanswer
 

quel environnement ?
 
sis Linux, GNUCommonC++, Socket++, etc

n°543022
Konar
Posté le 19-10-2003 à 08:46:12  profilanswer
 

franchement vous etes gerbant, les répondeurs plus que les posteurs.
 
le gars demande a faire de la socket pour apprendre, répondez lui ce qu'il veut entendre : comment faire des socket, qu'il soit sur nux ou win, c'est 100% pareil, en C ou C++.

n°543023
nraynaud
lol
Posté le 19-10-2003 à 08:58:02  profilanswer
 

Konar a écrit :

franchement vous etes gerbant, les répondeurs plus que les posteurs.
 
le gars demande a faire de la socket pour apprendre, répondez lui ce qu'il veut entendre : comment faire des socket, qu'il soit sur nux ou win, c'est 100% pareil, en C ou C++.

Si t'es pas jouasse tu peux te casser.
 
On n'a été gentil je trouve car l'unique réelle réponse est : "google est ton ami, comme pour 60% des questions de ce forum".
http://www.google.fr/search?q=C%2B [...] 8&oe=utf-8

n°543025
StanCW
Parle à Monkey ...
Posté le 19-10-2003 à 09:07:14  profilanswer
 

nraynaud a écrit :

Si t'es pas jouasse tu peux te casser.
 
On n'a été gentil je trouve car l'unique réelle réponse est : "google est ton ami, comme pour 60% des questions de ce forum".
http://www.google.fr/search?q=C%2B [...] 8&oe=utf-8


et en ce qui concerne les transferts de grande taille en tcp ???

n°543034
Taz
bisounours-codeur
Posté le 19-10-2003 à 10:28:57  profilanswer
 

Konar a écrit :

franchement vous etes gerbant, les répondeurs plus que les posteurs.
 
le gars demande a faire de la socket pour apprendre, répondez lui ce qu'il veut entendre : comment faire des socket, qu'il soit sur nux ou win, c'est 100% pareil, en C ou C++.

non justement ça l'est pas du tout, qu'il soit sous win ou sous un unix, y a des différences, s'il fait du C, qu'il fasse en C, s'il fait du C++ qu'il fasse en C++ .|

n°543036
nraynaud
lol
Posté le 19-10-2003 à 10:30:50  profilanswer
 

StanCW a écrit :


et en ce qui concerne les transferts de grande taille en tcp ???  

tu balances dans la socket sans t'occuper de la taille.
J'ai lu vite fait hier qu'on pouvait régler certains paramètres car TCP n'est pas très bien réglé par défaut pour les gros transfert, mais j'ai la flemme de rechercher le post (il était sur comp.lang.ada).

n°543041
Taz
bisounours-codeur
Posté le 19-10-2003 à 10:44:14  profilanswer
 

oui, on peut, moi non plus je retrouve plus, en fait ça consiste à n'émettre le paquet que quand il est plein (ou un flush)

mood
Publicité
Posté le 19-10-2003 à 10:44:14  profilanswer
 

n°543073
iS@mi
Resistance is futile !
Posté le 19-10-2003 à 13:11:54  profilanswer
 

Mais à quoi peut bien servir ce forum si toutes les réponses aux questions sont sur googles ?
 
L'avantage d'un forum c'est de pouvoir poser ses questions aussi bêtes qu'elles soient et d'en débatre pour rentrer dans le sujet en profondeur.
 
Et puis niveau topics de la section C++ c'est plutôt mord, donc ca gène pas outre mesure je trouve.
 
Maintenant, le truc chiant c'est les topics doubles.


Message édité par iS@mi le 19-10-2003 à 13:16:44
n°543075
nraynaud
lol
Posté le 19-10-2003 à 13:18:18  profilanswer
 

iS@mi a écrit :

Mais à quoi peut bien servir ce forum si toutes les réponses aux questions sont sur googles ?

Elles n'y sont pas toutes. Mais en général, quand elles n'y sont pas, personne ne sait sur ce forum et il faut aller sur des ml ou des newsgroups spécialisés.
 
Ce forum il sert à :  
1) apprendre à se servir de google
2) déconner sur blabla

n°544253
Konar
Posté le 19-10-2003 à 19:31:31  profilanswer
 

Taz a écrit :

non justement ça l'est pas du tout, qu'il soit sous win ou sous un unix, y a des différences, s'il fait du C, qu'il fasse en C, s'il fait du C++ qu'il fasse en C++ .|


 
les fonctions socket de berkeley sont standard, et si le prog est fait correctement il compilera sous linux, win, bsd, etc.
 
et c'est une lib plutot en C, avec des char* et plein de trucs dans ce genre. si je fais du c++ j'ai pas le droit de l'utiliser ? je fais comment, je m'abrutise a faire une classe spéciale socket ? (d'ailleurs aucune trouvée sur le net ne marche correctement)
 

Taz a écrit :

oui, on peut, moi non plus je retrouve plus, en fait ça consiste à n'émettre le paquet que quand il est plein (ou un flush)


 
c'est quoi un paquet "plein" ? "vide" je vois, mais plein la je saisis mal.
sinon pour envoyer des trucs de grosse taille (> 100 Ko par ex), je conseillerais quand meme de fragmenter les paquets (1, 2, 4 ou 8 Ko), ne serait ce que pour avoir un léger controle sur le transfert.

n°544258
Taz
bisounours-codeur
Posté le 19-10-2003 à 19:37:18  profilanswer
 

1) je pense pas qu'une classe compatible stream soit abrutissante, du moins bien moins que les char*
2) c'est un paquet dont la charge utile est maximale.
3) pour les trucs de grosse taille, remplis tes paquets .| la couche IP se charge de faire se qu'il faut pour l'acheminement, pas la peine de fragmenter à la main (l'effet serait d'ailleurs désastreux)

n°544321
Konar
Posté le 19-10-2003 à 20:27:53  profilanswer
 

1) ca l'est du moment que les fonctions de base en C marchent suffisamment bien, en faire une belle classe (qui marcherait peut-etre moins bien) servirait juste a se dire "ouais, moi je fais du C++"
2) je vois toujours pas... si tu te referes aux 1400 octets (ou 1200, me souvien plus) qui sont en theorie la taille des paquets envoyés, la ok.
3) me vois tres mal envoyer 20 Mo d'un coup dans ma socket, elle risque de pas aimer. Fragmenter peut paraitre con vu que la couche ip fragmente deja, mais ce qui serait desastreux ca serait de penser que le transfert va marcher nickel. en coupant un fichier en petit paquets de 8 Ko, on a un controle total sur le transfert, d'ailleurs y a qu'a voir comment sont écrit les ftp...

n°544339
Taz
bisounours-codeur
Posté le 19-10-2003 à 21:10:23  profilanswer
 

pourtant elle va aimer

n°544340
Taz
bisounours-codeur
Posté le 19-10-2003 à 21:11:00  profilanswer
 

si on fragmente c'est poura voir un controle d'erreur sur l'ecriture pour pas avoir à reprendre depuis le debut, etc

n°544547
nraynaud
lol
Posté le 20-10-2003 à 08:24:43  profilanswer
 

Taz a écrit :

si on fragmente c'est poura voir un controle d'erreur sur l'ecriture pour pas avoir à reprendre depuis le debut, etc

gni ? c'est TCP qui est sensé ce démerder de ça au niveau réseau (retransmition comprise).

n°544549
Taz
bisounours-codeur
Posté le 20-10-2003 à 08:29:41  profilanswer
 

oui et alors ? tu fais ton write(socket en C, et comme sut veux gérer un peu les erreurs, tu regardes son code de retour qui t'indique combien on était écrit. si ça foire, tu réessaies. non ?

n°544555
nraynaud
lol
Posté le 20-10-2003 à 08:54:07  profilanswer
 

Taz a écrit :

si ça foire, tu réessaies. non ?


honnêtement (je trouve que la question méritait d'être posée)
Je ne vois que 3 cas où réessayer, le cas d'interruption par un signal, celui d'un bourrage du buffer de sortie et celui de EAGAIN.

Citation :

ERRORS
     Write(), writev(), and pwrite() will fail and the file pointer will
     remain unchanged if:
 
     [EBADF]            D is not a valid descriptor open for writing.
 
     [EPIPE]            An attempt is made to write to a pipe that is not open
                        for reading by any process.
 
     [EPIPE]            An attempt is made to write to a socket of type
                        SOCK_STREAM that is not connected to a peer socket.
 
     [EFBIG]            An attempt was made to write a file that exceeds the
                        process's file size limit or the maximum file size.
 
     [EFAULT]           Part of iov or data to be written to the file points
                        outside the process's allocated address space.
 
     [EINVAL]           The pointer associated with d was negative.
 
     [ENOSPC]           There is no free space remaining on the file system
                        containing the file.
 
     [EDQUOT]           The user's quota of disk blocks on the file system
     [EINTR]            A signal interrupted the write before it could be com-
                        pleted.
 
     [EAGAIN]           The file was marked for non-blocking I/O, and no data
                        could be written immediately.
 
     In addition, writev() may return one of the following errors:
 
     [EDESTADDRREQ]     The destination is no longer available when writing to
                        a UNIX domain datagram socket on which connect(2) had
                        been used to set a destination address.
 
     [EINVAL]           Iovcnt was less than or equal to 0, or greater than
                        UIO_MAXIOV.
 
     [EINVAL]           One of the iov_len values in the iov array was nega-
                        tive.
 
     [EINVAL]           The sum of the iov_len values in the iov array over-
                        flowed a 32-bit integer.
 
     [ENOBUFS]          The mbuf pool has been completely exhausted when writ-
                        ing to a socket.
 
     The pwrite() call may also return the following errors:
 
     [EINVAL]           The specified file offset is invalid.
 
     [ESPIPE]           The file descriptor is associated with a pipe, socket,
                        or FIFO.


Mais c'est un problème applicatif et n'a rien à voir avec la liaison TCP qui est en dessous tant qu'aucun flush n'est lancé.
 
En fait je viens de comprendre ta remarque initiale, tu parlais de l'écriture dans la socket et de la transaction associée à tout write, pas de la connection réseau (auquel cas "fragmenter" voudrait au pire dire "flush" au mieux dire "close" ).

n°544560
Taz
bisounours-codeur
Posté le 20-10-2003 à 08:59:10  profilanswer
 

voilà

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  reseaux et socket en c++

 

Sujets relatifs
Pb socket sur acceptclasse socket std ?
[Windows] Fonction socket : sendto(...)PHP, socket & telnet... se logger sur un serveur distant [SOLVED]
[java] association socket / BufferedtInputStream[Réseaux] - comment connaitre le protocole encapsulé ds du TCP ou UDP
[C++] Utilisation de send pour socket[Java] Socket / Droits d'admin win2k
socket non bloquant ????raw_socket sous win 2000/xp
Plus de sujets relatifs à : reseaux et socket en c++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR