OVH Cloud OVH Cloud

Sockets en C++

55 réponses
Avatar
Merwin
Bonjour à tous,

Je suis étudiant en DUT Informatique, et je programme un peu en dehors
des cours pour m'entrainer, voici donc quelques questions.

1) J'aimerais faire une petite application qui se connecte à un serveur
IRC, donc via des sockets TCP. Seulement je me heurte à quelques problèmes:

- Y a t'il des bibliothèques portables qui me permettent de gérer plus
facilement les sockets? L'idée c'est que le code sois facilement
compilable d'une platforme à une autre.

Je sais que c'est possible avec Qt par exemple, mais ça me parait un peu
lourd, puisque si je commence à utiliser Qt, je vais utiliser tous
l'arsenal qui va avec (QSring, QList etc...), et je souhaiterais
utiliser un maximum la STL.

- Comment gérer le "main loop", je ne sais pas trop comment ça
fonctionne, car si je ne fais pas une boucle infinie (while true?) mon
programme arrete de s'éxécuter (normal me direz-vous...).

Alors comment puis-je empecher mon programme de s'arreter? Je cherche la
manière la plus propre possible. Encore une fois Qt permet ça facilement
puisque de base il y a un "event loop" qui gère ça, mais j'aimerais peut
voir d'autres méthodes.

2) Comment puis-je placer mon application en "fond", c'est à dire
qu'elle rende la main une fois qu'elle a été démarée. Idem, je cherche
une solution portable !

Merci d'avance pour votre aide,

Thibaut

10 réponses

2 3 4 5 6
Avatar
Marc Boyer
On 2009-03-16, Ael Rowen Terence wrote:
Parce que le truc que tu vas faire sera très surement moins bien que
l'existant, et que si ton but c'est d'apprendre les différences entre
les deux, il y a des moyens plus efficaces.



Pourrais-tu en dire plus sur ces moyens ?



Pour commencer, chercher un bouquin sur le sujet.
Je sais que 95% des informaticiens détestent lire et
préfèrent faire du copier/coller depuis Google et
compiler. Ce n'est efficace que sur de petits problèmes.

Sinon, prendre une doc, essayer de faire un bout de code
qui va titiller les différences qu'on a compris (ou pas),
etc.

Marc Boyer
--
Au XXIème siècle, notre projet de société s'est réduit
à un projet économique...
Avatar
Ael Rowen Terence
"Michael DOUBEZ" a écrit dans le message de groupe
de discussion : 49bc358e$0$23999$
Ael Rowen Terence wrote:


Chacun fait suivant sa sensibilité, et c'est bien ainsi.
Pourquoi ce diktat : ne pas réécrire ... alors que ce qui nous entoure
est renouvellement, même la roue des origines a été maintes fois
réinventée.



Je proteste, la roue n'a été inventée qu'une seule fois. Ensuite ce sont
des améliorations techniques.



:-)
Joli distinguo !



Ensuite "pourquoi ne pas réécrire ?": comme tu le dis, chacun est libre de
perdre son temps mais il y a certains avantages à utiliser une
bibliothèque testée, pensée et raffinée par plusieurs centaines
d'utilisateurs.




Se tromper, buter, pour au final comprendre son erreur, cela coute du
temps, c'est apprendre par soi, et apprendre sur soi (je pense que nous en
sommes tous passer par là).

Serait-ce mieux d'apprendre que par les autres ?
Avatar
espie
In article <49be2b1b$0$18928$,
Ael Rowen Terence wrote:
Se tromper, buter, pour au final comprendre son erreur, cela coute du
temps, c'est apprendre par soi, et apprendre sur soi (je pense que nous en
sommes tous passer par là).



Serait-ce mieux d'apprendre que par les autres ?



Non, mais en general, on constate plutot le travers inverse: des etudiants
a qui on fait tellement reinventer la roue qu'ils ne lisent pas du code
existant, s'imaginent tout savoir faire, avoir tout appris, et ne pas etre
capables de tirer des enseignements de code ecrit par d'autres.

L'attitude typique que j'ai deja vue, c'est:
"ah, c'est moche, je vais tout reecrire".

A ma question, "qu'est-ce qui est moche ?"
je recupere le plus souvent un
"ca correspond pas a ce qu'on m'a appris"
ou
"c'est pas comme ca que je l'ecrirais"
sans le moindre recul reel sur c'est bien/c'est pas bien...

Faut dire que les modes d'evaluation n'aident pas, vu que le plus souvent
on sanctionne tres lourdement les etudiants qui ont pompe ailleurs...

A cote de ca, une approche "lisez du code" ou "reutilisez du code existant
dans vos projets" est bien plus lourde a implementer, et reclame une certaine
honnetete intellectuelle des dits etudiants. Au lieu de juste corriger du
code, il faut mettre en place des soutenances, s'assurer que l'etudiant a bien
assimile les trucs et astuces du code qu'il emprunte... ca reclame plus de
moyens, qui ne sont souvent pas disponibles.

L'interet de reprendre des choses existantes, c'est que ca permet d'ecrire
du code qui sera lisible par d'autres personnes, parce qu'on a integre des
conventions correctes, et pas du code idiosyncratique qui ne sera lisible QUE
par son auteur. A une epoque ou tous les projets a valeur ajoutee sont de
gros projets, ou un grand nombre de developpeurs collaborent (et ou le
projet final est toujours attendu pour avant-hier), ca permet de former
l'etudiant au metier de developpeur... au lieu de lui laisser ramasser ses
dents a la premiere confrontation avec la realite du metier.
Avatar
pjb
(Marc Espie) writes:

A cote de ca, une approche "lisez du code" ou "reutilisez du code existant
dans vos projets" est bien plus lourde a implementer, et reclame une certaine
honnetete intellectuelle des dits etudiants. Au lieu de juste corriger du
code, il faut mettre en place des soutenances, s'assurer que l'etudiant a bien
assimile les trucs et astuces du code qu'il emprunte... ca reclame plus de
moyens, qui ne sont souvent pas disponibles.



Mais justement ! Si on veut favoriser la réutilisation du code, on ne
peut pas demander que l'étudiant ou le programmeur comprenne et
assimile les trucs et astuces duc ode qu'il emprunte. C'est
justement l'intérêt de l'utilisation de bibliothèque: ça permet de ne
pas comprendre comment elle est implémentée mais cependant l'utiliser.

L'analogie classique est la grand-mêre, ou même le chirurgien, qui ne
connaissant rien à la mécanique automobile, sont quand même capables
d'utiliser une voiture et de la conduire.


L'interet de reprendre des choses existantes, c'est que ca permet d'ecrire
du code qui sera lisible par d'autres personnes, parce qu'on a integre des
conventions correctes, et pas du code idiosyncratique qui ne sera lisible QUE
par son auteur. A une epoque ou tous les projets a valeur ajoutee sont de
gros projets, ou un grand nombre de developpeurs collaborent (et ou le
projet final est toujours attendu pour avant-hier), ca permet de former
l'etudiant au metier de developpeur... au lieu de lui laisser ramasser ses
dents a la premiere confrontation avec la realite du metier.



C'est là où je ne suis plus d'accord. Il n'y a plus UN métier. il y en a plusieurs.

Il y a le métier d'algorithmicien créateur de bibliothèques et de
programmes partant de zéro, et il y a le métier d'intégrateur
d'application utilisant et réutilisant des bibliothèques les
aggrégeant en des applications. Sans compter d'innombrables autres
métiers. Il me parait de moins en moins sensé de les regrouper sous
le même chapiteau de "programmeur".


--
__Pascal Bourguignon__
Avatar
espie
In article ,
Pascal J. Bourguignon wrote:
Mais justement ! Si on veut favoriser la réutilisation du code, on ne
peut pas demander que l'étudiant ou le programmeur comprenne et
assimile les trucs et astuces duc ode qu'il emprunte. C'est
justement l'intérêt de l'utilisation de bibliothèque: ça permet de ne
pas comprendre comment elle est implémentée mais cependant l'utiliser.



Oui, c'est une belle approche tres dogmatique. Mais tu attends aussi
de ton developpeur qu'il apprenne de nouvelles techniques/de nouvelles
presentations de code.

L'analogie classique est la grand-mêre, ou même le chirurgien, qui ne
connaissant rien à la mécanique automobile, sont quand même capables
d'utiliser une voiture et de la conduire.




Et la realite est le code mal foutu developpe par des mecs qui maitrisent
a peine les techno qui utilisent (niveau grand-mere). C'est bien, ca fait
tourner les SSII a coups de corrections de bugs et d'evolution sur du code
pourri qui ne devrait pas exister au depart.



L'interet de reprendre des choses existantes, c'est que ca permet d'ecrire
du code qui sera lisible par d'autres personnes, parce qu'on a integre des
conventions correctes, et pas du code idiosyncratique qui ne sera lisible QUE
par son auteur. A une epoque ou tous les projets a valeur ajoutee sont de
gros projets, ou un grand nombre de developpeurs collaborent (et ou le
projet final est toujours attendu pour avant-hier), ca permet de former
l'etudiant au metier de developpeur... au lieu de lui laisser ramasser ses
dents a la premiere confrontation avec la realite du metier.



C'est là où je ne suis plus d'accord. Il n'y a plus UN métier. il y en
a plusieurs.



Gnagnagna.

Il y a le métier d'algorithmicien créateur de bibliothèques et de
programmes partant de zéro, et il y a le métier d'intégrateur
d'application utilisant et réutilisant des bibliothèques les
aggrégeant en des applications. Sans compter d'innombrables autres
métiers. Il me parait de moins en moins sensé de les regrouper sous
le même chapiteau de "programmeur".



N'empeche qu'une grosse partie de ces metiers sont vachement plus efficaces
si tu prends des gens qui comprennent un petit plus que ce qu'ils font.
Je suis contre la taylorisation a outrance du job d'informaticien.
Evidemment, ca permet d'embaucher les laisses pour compte qui auraient bien
fait autre chose mais, ma brave dame, il n'y a qu'en informatique qu'il y a
du boulot. Mais ca conduit a des projets demesures, avec la personne qui
doit finir le boulot qui, generalement, s'arrache les cheveux, entre un
client, une maitrise d'ouvrage, une maitrise d'oeuvre et une TMA qui font
des petits bouts de trucs mal connectes, parcellises a un tel point que plus
personne n'a de vision d'ensemble.
Avatar
James Kanze
On Mar 17, 2:00 am, Alexandre BACQUART
wrote:
Michael DOUBEZ wrote:
> Alexandre BACQUART wrote:
>> Michael DOUBEZ wrote:
>>> Sylvain SF wrote:
>>>> Michael DOUBEZ a écrit :
>>>>> Bien sûr, c'est jusqu'à preuve du contraire.
>>>> ou comprendre ce que l'on lit.



[...]
>> Ce n'est pas un manque d'ingéniosité qui a empêché les
>> amérindiens d'utiliser la roue, mais leur ascétisme. La
>> roue était pour eux "quelque-chose qu'il est inutile de
>> mettre en oeuvre", à défaut d'inventer. Qu'y a-t-il
>> d'avantageux à avoir des brouettes quand on est un peuple
>> sédentaire et ascétique, qu'on a des chevaux et si peu
>> d'attaches matérielles ?



Cette réflexion me vient essentiellement de là :



http://cetcopra.univ-paris1.fr/Documents/Illusion_de_la_fatalite.pdf



Ce qui a l'air d'être de la philosophie gratuite, et surtout ne
cite pas ses sources.

On ne pourra jamais savoir à 100% sûr « pourquoi » les
amérindiens n'utilisaient pas la roue. Mais certains faisaient
bien des choses où la roue aurait simplifié les choses ; a
priori, s'ils y avaient pensé, ils se seront servis. Et les
amérindiens pré-colobiens n'étaient pas toujours sédendaire, et
n'avaient pas le cheval.

> Les peuples précolombiens avaient des chevaux ? Les
> amérindiens sûrement mais je ne vois pas le rapport, ils
> avaient des travois qui transportaient leurs possessions
> (comme leurs tentes).



Ca doit sûrement expliquer le fait qu'ils parlaient de "cheval
de fer" plutôt que de "brouette infernale"...



Ou peut-être parce que l'image « cheval de fer » convient
assez naturalement.

Sans rire, au nom de quoi la non-utilisation d'un outil est
synonyme de l'ignorance de son existence ? (on est pas si loin
de la programmation au fond, ce troll a peut-être une petite
chance de revenir en charte !).



Si l'outil est connu, et que son utilisation a un sens,
quelqu'un va s'en servir. (Il y aura bien des vieux pour en
faire résistance, mais à la longue, il servira.)

Je ne doute pas que les précolombiens aient pu être surpris de
voir les différentes utilisations que les colons avaient de la
roue. Mais je doute qu'ils en aient découvert le principe de
la sorte.



> Même dans une société sédentaire, la roue est utile ne
> serait-ce que pour pousser une brouette.



Définir "utile" chez les précolombiens. Pourquoi pousser une
brouette quand on peut se contenter de tirer un travois ou un
traîneau ?



Efficacité. Mettre des roues sur le travois, et on peut tirer
plus.

Ces gens n'étaient pas simplement sédentaires, le point
crucial, je crois l'avoir dis, était leur ascétisme, pour bien
des choses sans doute, et notamment pour la roue qu'ils
connaissaient vraisemblablement déjà.



J'ai aussi mes doutes sur leur ascétisme. À la fin, dans
l'ensemble, ils n'étaient ni plus ni moins ascétiques que
n'importe quel autre peuple. (À la fin, en fait, je ne crois pas
qu'on puisse même postuler de telles généralités sur des
amérindiens. L'Amérique, c'est grande, et dans l'absense des
moyens de communication efficace, il y a eu beaucoup de cultures
différentes.)

On ne sait finalement pas grand-chose de ces gens,



Surtout pas s'ils étaient ascétiques ou non. (À vrai dire,
qu'est-ce que ça veut dire, qu'un peuple soit ascétique ?) Ce
qu'on sait, c'est qu'ils n'avaient pas de roue, ni de gros
animaux de trait -- les deux faits sont peut-être liés.

on a littéralement atomisé leurs cultures millénaires en moins
d'un siècle et 500 ans plus tard, on ramasse des morceaux
de-ci de-là. Mais on a avancé quand-même, car la question
n'est plus de savoir s'il étaient capables d'inventer la roue,
ni même de savoir s'il l'ont vraiment fait à un moment donné
(manifestement oui), mais plutôt pourquoi ne l'ont-ils pas
utilisé ? Et l'explication qui me semble être la plus
raisonnable, c'est déjà qu'ils ne voulaient pas, ils n'en
ressentaient pas le besoin.



Je ne trouve rien de raisonable dans cette explication.

--
James Kanze (GABI Software) email:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Avatar
James Kanze
On Mar 17, 9:50 am, Michael DOUBEZ wrote:
Alexandre BACQUART wrote:
> Michael DOUBEZ wrote:
>> Alexandre BACQUART wrote:
>>> Michael DOUBEZ wrote:
>>>> Sylvain SF wrote:
>>>>> Michael DOUBEZ a écrit :
[snip]



>> Les peuples précolombiens avaient des chevaux ? Les
>> amérindiens sûrement mais je ne vois pas le rapport, ils
>> avaient des travois qui transportaient leurs possessions
>> (comme leurs tentes).



> Ca doit sûrement expliquer le fait qu'ils parlaient de
> "cheval de fer" plutôt que de "brouette infernale"...



Les peuples précolombiens sont ceux qui vivaient dans le
continent sud-américain



« Précolombien » est avant tout un adjectif qui s'applique à
tous ce qui concerne les êtres humains dans les Amériques (nord
et sud) avant l'arrivée de Colombe. Donc, les mound builders
sont bien une civilisation précolombienne, même si elle se
situe aux États-unis (ou plutôt, ce qui allait devenir les
États-unis).

et si je me souviens bien, n'avaient pas de chevaux (ou ne les
utilisaient pas, ce qui revient au même).



Le cheval s'est éteint des Amériques il y a 8000 à 10000 ans,
avant sa domestication. Il a été réintroduit par les espagnols
au début du XVIième siècle. Certains sont très vites devenu
marron, et se sont étendus vers le nord, de façon à arriver dans
le nord des plaines américains vers le milieu du XVIIIième.
L'image donc du Sioux (ou plus correctement Dakota) chasseur de
bison ne correspond donc qu'aux derniers cents ans, voire moins,
avant le contact avec les pioniers américains. (Quand Lewis et
Clark les ont rencontrés, les vieux des villages se rappelaient
encore des premiers chevaux.)

[...]
> On ne sait finalement pas grand-chose de ces gens, on a
> littéralement atomisé leurs cultures millénaires en moins
> d'un siècle et 500 ans plus tard, on ramasse des morceaux
> de-ci de-là. Mais on a avancé quand-même, car la question
> n'est plus de savoir s'il étaient capables d'inventer la
> roue, ni même de savoir s'il l'ont vraiment fait à un moment
> donné (manifestement oui), mais plutôt pourquoi ne l'ont-ils
> pas utilisé ? Et l'explication qui me semble être la plus
> raisonnable, c'est déjà qu'ils ne voulaient pas, ils n'en
> ressentaient pas le besoin.



Ils n'en avaient pas le besoin pour la même raison que je n'ai
pas besoin de skis pour me déplacer. Ce qui explique que le
télémark ait été inventé en montage. Comme je l'ai dit
surement l'absence d'animaux de traits et de route
carrossables.



L'absence des animaux de traits ait pû jouer un rôle. En
général, les routes carrossables suivent la domestication des
animaux de trait et l'utilisation des roues -- il n'y a pas
intérêt à y investir l'effort avant (et les populations des
steppes eurasiennes avaient des chevaux et des chariots bien
avant qu'il y avait des routes carrossables dans la region).

En fait, les Incas avaient des llamas, qui servaient d'animaux
de bât, et aurait pû, je crois, servir d'animaux de trait ; ils
avaient aussi un système de routes assez évoluées qui aurait pû
être amenagé facilement en routes carrossables.

> Et que quand-bien même un colon tout seul serait venu leur
> raconter tout ce qu'on peut faire de chouette avec une roue
> aujourd'hui, tout cet or de *notre* monde ne valait
> peut-être pas l'attachement qu'ils portaient à leurs terres
> et leurs modes de vies.



Je ne sais pas. Je ne parle pas leur langue et je ne les ait
jamais rencontré. Qu'ils aient tenu à leur terre ne fait pas
de doute; au minimum autant qu'une hermine tiens à sa peau je
suppose :)



Au contraire. Au moins les indiens sur la côte atlantique des
États-unis ont volentairement cédé une partie de leur terre aux
colonistes. Ils ne savaient pas ce qui leur attendait.

--
James Kanze (GABI Software) email:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Avatar
Michael DOUBEZ
James Kanze wrote:
En fait, les Incas avaient des lamas, qui servaient d'animaux
de bât, et aurait pû, je crois, servir d'animaux de trait ; ils
avaient aussi un système de routes assez évoluées qui aurait pû
être amenagé facilement en routes carrossables.



J'ai eu l'occasion d'utiliser un âne comme animal de bât et c'est déjà
toute une éducation alors un lama et son sale caractère ... je comprends
qu'il aient préféré porter leurs affaires eux-même :)


Et que quand-bien même un colon tout seul serait venu leur
raconter tout ce qu'on peut faire de chouette avec une roue
aujourd'hui, tout cet or de *notre* monde ne valait
peut-être pas l'attachement qu'ils portaient à leurs terres
et leurs modes de vies.





Je ne sais pas. Je ne parle pas leur langue et je ne les ait
jamais rencontré. Qu'ils aient tenu à leur terre ne fait pas
de doute; au minimum autant qu'une hermine tiens à sa peau je
suppose :)



Au contraire. Au moins les indiens sur la côte atlantique des
États-unis ont volentairement cédé une partie de leur terre aux
colonistes. Ils ne savaient pas ce qui leur attendait.



Tu dois parler de l'ile de manhattan.

Pour être tout à fait honnête, ils n'avaient peut être pas la même
notion des droits de vente et de propriété que nous. Il est coutumier
dans certaines cultures que la vente revienne à un droit d'usage pendant
un temps limité ou donne seulement des prérogatives sur le droit
collectif. Je doute qu'il y ait eu une étude de compatibilité
sociologique avant la signature du contrat.

En clair, on pourrait discuter la légalité d'un tel acte d'achat et le
fait qu'ils l'aient fait n'est pas à mesurer avec nos valeurs.

--
Michael
Avatar
James Kanze
On Mar 17, 12:29 pm, Michael DOUBEZ wrote:
James Kanze wrote:
>>> Et que quand-bien même un colon tout seul serait venu leur
>>> raconter tout ce qu'on peut faire de chouette avec une
>>> roue aujourd'hui, tout cet or de *notre* monde ne valait
>>> peut-être pas l'attachement qu'ils portaient à leurs
>>> terres et leurs modes de vies.



>> Je ne sais pas. Je ne parle pas leur langue et je ne les
>> ait jamais rencontré. Qu'ils aient tenu à leur terre ne
>> fait pas de doute; au minimum autant qu'une hermine tiens à
>> sa peau je suppose :)



> Au contraire. Au moins les indiens sur la côte atlantique
> des États-unis ont volentairement cédé une partie de leur
> terre aux colonistes. Ils ne savaient pas ce qui leur
> attendait.



Tu dois parler de l'ile de manhattan.



Non particulièrement. Ni à Jamestown, ni à Plymouth les indiens
ne se sont pas opposés à l'installation des blancs. Dans les
deux cas, d'ailleurs, la survie de la colonie est due à l'aide
apportée par les indiens.

Vue les suites, on pourrait dire qu'ils ont eu tort. Ou comme
j'ai lu quelque part : tous les problèmes des États-unis
viennent d'une politique d'immigration trop libérale... de la
part des indiens.

--
James Kanze (GABI Software) email:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Avatar
pjb
James Kanze writes:

Tu dois parler de l'ile de manhattan.



Non particulièrement. Ni à Jamestown, ni à Plymouth les indiens
ne se sont pas opposés à l'installation des blancs. Dans les
deux cas, d'ailleurs, la survie de la colonie est due à l'aide
apportée par les indiens.

Vue les suites, on pourrait dire qu'ils ont eu tort. Ou comme
j'ai lu quelque part : tous les problèmes des États-unis
viennent d'une politique d'immigration trop libérale... de la
part des indiens.



Et encore, il faut distinguer le comportement colonial français du
comportement d'envahisseur des anglais. Ce sont eux qui ont
exterminé. Les français se battaient aux côtes des indigènes contre
les anglais. Cette différence c'est toujours retrouvée, dans toutes
les colonies de ces pays.

--
__Pascal Bourguignon__
2 3 4 5 6