J'ai un problème étrange avec mon code, pour le moment tout fonctionne bien, sauf la partie d'envoi. Chaque fois que j'essaie d'envoyer un paquet, il envoie en réalité beaucoup de paquets vides, et je ne peux pas savoir pourquoi, j'ai vérifié avec le débogueur et la fonction SendPacket n'est appelée qu'une seule fois. Merci à tout le monde!C# problème de socket asynchrone
Répondre
Ce que je vois: vous passez un tableau (loginOutBuffer
) à Socket.BeginSend()
dans SendPacket
via OnPacketRecv
, mais vous ne videz pas immédiatement après dans OnPacketRecv
.
Socket.BeginSend()
ne fait pas de copie du tableau lorsque vous le transmettez, il envoie donc les données dans le tableau maintenant effacé, ce qui entraîne la sortie de zéros à l'autre extrémité. Qu'entendez-vous par «un paquet vide»?
C'est vrai, mais ce n'est pas lié au problème principal lui-même. Le problème est que je reçois beaucoup de paquets vides dans mon application serveur, même si j'appelle beginend une seule fois. Encore merci pour votre aide! –
Voir mon commentaire sur votre question pour ma réponse. –
- 1. Problème de synchronisation de requête jQuery asynchrone
- 2. Socket SSL dans Windows. Bibliothèque? Synchrone/asynchrone? Threads?
- 3. Rappel asynchrone Objective-C de
- 4. problème d'écriture Socket TCP/IP
- 5. programmation Socket en C
- 6. C#, socket via le routeur
- 7. Socket lire les données de manière asynchrone avec terminaison de message spécial
- 8. Problème ip/port du serveur socket
- 9. TCPClient vs Socket en C#
- 10. De C++ wchar_t à C# char via socket
- 11. émet .NET C# Socket Concurrency
- 12. TCP/IP asynchrone côté serveur
- 13. Programme de socket Python vs C++ (Winsock)
- 14. Passant Socket De C# à NetFoss
- 15. Exemples d'interaction asynchrone dans C# .Net?
- 16. Appel asynchrone à WCF avec C#?
- 17. Programmation socket USS C++ et _OE_SOCKETS
- 18. boost :: asio, erreur de lecture asynchrone
- 19. connexion asynchrone
- 20. Client TCP Callback asynchrone
- 21. Comment une erreur signalée par une socket asynchrone est-elle connectée?
- 22. wpf ComboBox Liaison asynchrone aux éléments source problème
- 23. Copie dirigée de manière asynchrone
- 24. C# Socket Server Envoyer la question
- 25. Recommandations de socket
- 26. Fermeture/déliaison un socket UDP en C#
- 27. Erreur sur le programme client/serveur c: "Connect: opération de socket sur non-socket"
- 28. Communication de port série asynchrone dans Windows dans c
- 29. Problème avec les sockets en C#
- 30. Comment puis-je obtenir un port de socket libre? C++
Comment lisez-vous du côté serveur? TCP est un protocole de flux, il ne "pense" pas dans les paquets. Le récepteur peut avoir besoin d'avoir plusieurs appels à recevoir pour obtenir toutes les données d'un seul envoi, de même, plusieurs envois peuvent se retrouver dans une seule réception en raison de Nagle. Vous envoyez un tableau vide (c'est-à-dire tous les zéros). Si votre serveur interprète cela bizarrement, ou appelle Recevoir avec un petit tampon, il semblera "plusieurs paquets". –
Wow. Après toutes ces heures .. le problème était dans la ligne suivante Client.BeginSend (buff, 0, buff.length, SocketFlags.None, nouveau AsyncCallback (SendData), client); Il envoyait 8192 octets à l'application côté serveur .. hé, je suis un idiot, merci pour votre quand même! –
Je peux vous voir probablement raté, mais mon commentaire plus tôt est la ** seconde ** fois que je vous ai dit que vous envoyez le tableau plein de zéros. "En tous cas." –