Sockets C#: Comment gérez-vous un socket dans C# .NET comme ils sont gérés dans VB6 ou Delphi (piloté par un événement)? Sur VB6 ou Delphi, lors de la création d'un socket, vous aviez des événements onconnect, onreceive et onerror placés dans le fichier de code principal, comment les reproduire?Sockets C#: Comment gérez-vous une socket en C# .NET de la façon dont ils sont gérés dans VB6 ou Delphi (piloté par les événements)?
Répondre
Vous devriez lire sur la classe TcpClient, le codage réseau n'est pas aussi rapide que glisser dans la version 6, mais vous avez beaucoup plus de contrôle sur le protocole.
De même, il existe un certain nombre de bibliothèques de clones WinSock qui agissent et s'interfacent de la même manière que l'équivalent vb6.
Vous n'avez pas exactement le comportement comme dans VB6/Delphi et vous avez des méthodes Async et des événements pour faire des choses comme, par exemple: AsyncTCP Client
Il n'y a pas une telle classe disponible dans le framework .Net afaik.
Il est assez facile de créer une classe avec OnConnect, OnReceive etc qui encapsule la classe socket. Et si vous êtes inexpérimenté en faisant des cours qui envoient des événements, c'est une très bonne expérience d'apprentissage.
C'était la première chose que j'ai faite quand je suis passé de VB6 à .Net et que j'ai eu besoin de "winsock".
La réponse courte est: En utilisant des techniques de multithreading. La réponse longue est que les événements ne sont en fait qu'un signal généré par un autre code qui vérifie en permanence un ensemble de circonstances particulier. Par exemple, une partie très simple code responsable de l'événement est DataAvailable pourrait ressembler à ceci:
While Socket Is Connected
If Data Is Available Raise Event DataAvailable
Loop
La bibliothèque .Net a une classe Socket que vous pouvez envelopper avec une classe que vous concevez à se comporter un peu plus comme la classe Winsock qui était disponible dans VB6. Une fois que vous avez parcouru la documentation de la classe Socket et appris comment créer des événements personnalisés pour une classe, il n'est pas difficile d'imaginer comment un tel wrapper pourrait être conçu. Le véritable obstacle pour la plupart des développeurs venant de VB6 (et pour moi) est que vous devez en apprendre un peu plus sur les applications multithread pour que cela fonctionne correctement.
Vous pouvez probablement trouver un tel emballage en faisant un peu de recherche, mais je vous encourage fortement à au moins essayer d'écrire le vôtre. Avec les machines à âme unique devenant rapidement une chose de l'expérience passée avec les techniques de multithreading va devenir une exigence de tout programmeur décent.
- 1. Comment les dictionnaires imbriqués sont-ils gérés par DictWriter?
- 2. Connexion aux événements COM en C# - prise en charge des serveurs gérés et non gérés
- 3. Selon la façon dont ils sont construits, les rappels peuvent-ils être définis comme des fermetures?
- 4. Problème avec les sockets en C#
- 5. meilleure façon d'obtenir une entrée utilisateur pour un CLI piloté par menu en C
- 6. Création d'un calendrier piloté par MSSQL dans .NET C#
- 7. Conversion entre les types gérés et non gérés en C++?
- 8. C# pour VB6 événements COM (« objet ou classe ne prend pas en charge l'ensemble des événements »)
- 9. Les événements Silverlight DataGrid Checkbox sont-ils?
- 10. émet .NET C# Socket Concurrency
- 11. Comment les tableaux alloués dynamiquement sont-ils libérés en C++?
- 12. Comment les délégués définis par l'utilisateur sont-ils utilisés et créés en C#?
- 13. Les attributs de méthode sont-ils hérités en C#?
- 14. C# Socket Server Envoyer la question
- 15. Exclusion mutuelle et Sockets C
- 16. C Sockets Commande Ping?
- 17. Événements COM + avec C# et .NET
- 18. Les indexeurs statiques ne sont-ils pas supportés en C#?
- 19. Les enum ont-ils une limite de membres en C#?
- 20. Développement piloté par domaine en C# - exemple d'application Web
- 21. Comment appeler une DLL Delphi de VB6
- 22. C# (ou VB6) Convertir Word doc en Tiff
- 23. PHP Sockets ou Python, Perl, Bash Sockets?
- 24. programmation Socket en C
- 25. Attributs d'assembly C++ gérés
- 26. C# Raw Sockets Port Forwarding
- 27. Les sous-domaines peuvent-ils être gérés par programme dans une application ASP.Net?
- 28. Dans quel ordre les événements de formulaires .NET Windows sont-ils déclenchés?
- 29. Comment: écouter Java pour les événements capturés par thread C
- 30. TCPClient vs Socket en C#