socket en C ...

socket en C ... - C - Programmation

Marsh Posté le 13-12-2004 à 18:40:18    

Bonjour,  
 
Je travaille actuellement sur une application Unix (en C Unix) qui a été porté sous WIndows.. Quand je dis porté... c beaucoup dire.. disons qui compile sous Windows et qui est encapsulé dans une application multithread Windows...(donc en C++)
 
Cette appli se connecte à un serveur Unix en socket pour faire de l'animation d'éléments...
J'ai vu dans le code que tout ce qui concerne les sockets est resté en programmation Unix (bzero, bcopy, sigsetmask, etc...)
Pas de WSAStartup par exemple..
 
Or l'animation est tres peu stable..
Est ce que le fait de porter la programmation socket en Windows (en gros de passer le code du client Unix en client Windows) peut etre bénéfique?
 
Merci pour votre aide!

Reply

Marsh Posté le 13-12-2004 à 18:40:18   

Reply

Marsh Posté le 13-12-2004 à 21:04:53    

ben33 a écrit :

Je travaille actuellement sur une application Unix (en C Unix) qui a été porté sous WIndows.. Quand je dis porté... c beaucoup dire.. disons qui compile sous Windows et qui est encapsulé dans une application multithread Windows...(donc en C++)


Je ne vois pas pourquoi 'donc en C++'. L'API Win32 propose les pthtreads qui sont équivallents à ceux qu'on a sous Unix (à quelques détails près) et qui sont tout à fait appelables en C.

Citation :


Cette appli se connecte à un serveur Unix en socket pour faire de l'animation d'éléments...
J'ai vu dans le code que tout ce qui concerne les sockets est resté en programmation Unix (bzero, bcopy, sigsetmask, etc...)
Pas de WSAStartup par exemple..


Marche pas. Sous Windows, il faut absolument appeler WSAStartup() et ne pas se tromper entre winsock et winsock2.

Citation :


Or l'animation est tres peu stable..
Est ce que le fait de porter la programmation socket en Windows (en gros de passer le code du client Unix en client Windows) peut etre bénéfique?


Ecrire du code correct ne peut être que bénéfique! Un client Windows en winsock2 est très proche d'un client Unix BSD, à part l'init et la fin (WSA...)


Message édité par Emmanuel Delahaye le 13-12-2004 à 21:05:28

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 14-12-2004 à 09:36:10    

Merci beaucoup...  
Ca fonctionne actuellement... mais ce nets pas super stable.. d'ou ma question..
Merci beaucoup

Reply

Marsh Posté le 23-12-2004 à 12:02:09    

quelle est la difference entre winsock et winsock2 ?

Reply

Marsh Posté le 23-12-2004 à 12:56:34    

tertulia a écrit :

quelle est la difference entre winsock et winsock2 ?


Winsock est la première version des sockets Windows. Elle est très 'propriétaire'
 
Winsock2 est la deuxième version. Elle se rapproche énormément des sockets 'BSD' du monde Unix (Normalisés par POSIX.1 si je ne me trompe pas...).  
 
C'est ce qu'il faut utiliser pour tout développement nouveau.
 
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 23-12-2004 à 13:42:17    

le pb c que si j'inclue winsock2 j'ai des redefinitions dues a   winsock alors que je l'inclue nul part...

Reply

Marsh Posté le 23-12-2004 à 14:05:51    

Emmanuel Delahaye a écrit :

L'API Win32 propose les pthtreads


Win32 dispose de ses propres thread [:aloy]
Y'a un portage des pthread (posix thread) pour Win32. Win32 n'est pas POSIX.
Un lien utile : http://tangentsoft.net/wskfaq/
Sinon que veux-tu dire par ce n'est pas stable, mais encore ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 05-01-2005 à 10:16:48    

Y a t il un équivalent Windows pour sigsetmask...?  
Je n'arrive pas a trouver.. snif snif snif

Reply

Marsh Posté le 05-01-2005 à 11:36:51    

Y'a pas les signaux en Win32. Si c'est pour faire des read non bloquants utilise select.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 05-01-2005 à 18:33:52    

Merci

Reply

Marsh Posté le 05-01-2005 à 18:33:52   

Reply

Marsh Posté le 16-01-2005 à 00:13:01    

les socket windows winsock2.h sont mieux struturé que le model unix , la gestion d'erreur estr plus précise.
les pthread de windows sont disponibles avec la commande  hThread = CreateThread( ...


Message édité par burnout_23 le 16-01-2005 à 00:14:40
Reply

Marsh Posté le 16-01-2005 à 00:16:32    

pthread = POSIX thread. Windows possède son propre modèle de thread, non POSIX.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed