2010-12-07 20 views
3

Je ne comprends pas exactement comment envoyer des données sur C# socket.send (octet []), Je veux dire qu'ils disent que je dois envoyer 0800 (demande de gestion de réseau) pour un test d'écho, comment convertir. S'il vous plaît, j'ai programmé pendant un moment mais je ne comprends pas les instructions.comment encoder les données pour iso 8583 à transférer C#

Merci

Répondre

0

En regardant les spécifications, il serait impossible de fournir une réponse complète ici - mais pour vous aider à démarrer, vous avez besoin essentiellement de créer les différents messages et les envoyer dans le tuyau. Comme la classe Socket requiert un tableau d'octets plutôt qu'une chaîne, vous pouvez utiliser l'une des classes de codage pour obtenir les octets bruts d'une chaîne. Si je lis les informations correctement à partir Wikipedia:

byte[] echo = System.Text.Encoding.ASCII.GetBytes("0100"); 
socket.Send(echo); 

Disclaimer: Je ne l'ai jamais eu à mettre en œuvre la norme ISO 8583 et la référence que je regardais était pas clair si les codes étaient en fait des simples caractères ASCII (bien que je suis parier qu'ils sont). Espérons que quelqu'un de plus familier avec la norme clarifiera ou confirmera cette hypothèse.

1

Vous devez d'abord comprendre la spécification pour laquelle vous travaillez; Je suppose que vous avez quelque chose de plus spécifique que la spécification de message ISO8583 nue, quelque chose qui est spécifique sur les champs requis et le contenu. L'important est la manière dont vous construisez et débloquez les champs ISO8583 depuis et vers le message en fonction du bitmap qui spécifie quels champs sont présents.

Lorsque j'ai construit des clients de test ISO8583 en C# dans le passé, j'ai d'abord mis en place un ensemble de classes qui pourraient construire et débloquer un bitmap de message. Une fois que vous avez cela, vous avez besoin de code pour construire et débloquer vos messages. Ceux-ci établissent (ou testent) des bits dans le bitmap puis extraient ou insèrent les champs attendus dans un tampon d'octets.

Une fois que vous avez ceci fonctionnant l'envoi et la réception réels des messages de tampon d'octet est trivial.

5

Tout d'abord, vous devez avoir une compréhension du ISO8583 message format. Pour les messages de test d'écho, dans la révision 87, votre MTID devrait être 0800 et le champ 70, le code d'information de gestion de réseau, devrait être réglé sur 301, indiquant un test d'écho.

Construire un message ISO est assez compliqué. (shameless plug venir) Je l'ai sorti OpenIso8583.Net, un analyseur de message/constructeur pour .Net qui peut être prolongée dans la saveur particulière de l'ISO que vous utilisez

0
  //***************additional encoders*************** 
      UnicodeEncoding encoderUnicode = new UnicodeEncoding(); 
      UTF32Encoding encoder32 = new UTF32Encoding(); 
      UTF7Encoding encoder7 = new UTF7Encoding(); 
      UTF8Encoding encoder8 = new UTF8Encoding(); 
      //*************end of additionals************* 

      ASCIIEncoding encoder = new ASCIIEncoding(); 

sur l'analyseur, faire google sur iso 8583, de préférence de 2003