[This message was posted by eyal berda of netex <[email protected]> to the 
"Algorithmic Trading" discussion forum at http://fixprotocol.org/discuss/31. 
You can reply to it on-line at http://fixprotocol.org/discuss/read/1529a177 - 
PLEASE DO NOT REPLY BY MAIL.]

Hello forum members,
I have a problem receiving  fix server indication when sending logon fix 
message 
I was creatig a c# console app program using async request to a  fix demo 
gateway
using this code:
using System;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Security.Cryptography;
using System.Threading;
namespace Simple_async_socket_coonnect
{

    public static class GlobalVar
    {
        




        static Byte[] _globalValueByteGetreceive;

        /// <summary>
        /// Access routine for global variable.
        /// </summary>
        public static Byte[] GlobalValueByteGetreceive
        {
            get
            {
                return _globalValueByteGetreceive;
            }
            set
            {
                _globalValueByteGetreceive = value;
            }
        }
        /// <summary>
        /// Static value protected by access routine.
        /// </summary>
        static Byte[] _globalValueByteGet;

        /// <summary>
        /// Access routine for global variable.
        /// </summary>
        public static Byte[] GlobalValueByteGet
        {
            get
            {
                return _globalValueByteGet;
            }
            set
            {
                _globalValueByteGet = value;
            }
        }

        /// <summary>
        /// Global static field.
        /// </summary>
        public static bool GlobalBoolean;
    }

    class Program
    {


        static void Main(string[] args)
        {
            Console.WriteLine(DoSocketGet("*****"));



        }
        static string DoSocketGet(string server)
        {

            //Set up variables and String to write to the server.
            Random random = new Random();
            Encoding ASCII = Encoding.ASCII;
            StringBuilder nt = new StringBuilder();
            nt.Append("8=FIX.4.4/9=136/35=A/49=*****/56=***/34=596");
            //nt.Append("34=" + random.Next(1000) + " 52=" + 
DateTime.UtcNow.ToString("yyyyMMdd-HH:mm:ss") + " 98=0 108=30  554=" + 
sha256encrypt("1bird2lake") + " 10=015");
            nt.Append("/52=" + DateTime.UtcNow.ToString("yyyyMMdd-HH:mm:ss") + 
"/98=0/108=30" + "/554=" + sha256encrypt("*****") + "/10=118/");

            string Get = nt.ToString();
            Byte[] ByteGet = ASCII.GetBytes(Get);
            GlobalVar.GlobalValueByteGet = ByteGet;
            Byte[] RecvBytes = new Byte[256];
            GlobalVar.GlobalValueByteGetreceive = RecvBytes;
            String strRetPage = null;

           

                Socket s = null;
                IPEndPoint hostEndPoint;
                IPAddress hostAddress = null;
                int conPort = 5679;
                // Get DNS host information.
                IPHostEntry hostInfo = Dns.GetHostEntry(server);
                // Get the DNS IP addresses associated with the host.
                IPAddress[] IPaddresses = hostInfo.AddressList;
                hostAddress = IPaddresses[0];
                hostEndPoint = new IPEndPoint(hostAddress, conPort);
                // Creates the Socket to send data over a TCP connection.
                s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, 
ProtocolType.Tcp);
                // Connect to the host using its IPEndPoint.
                //  ManualResetEvent connectDone = new ManualResetEvent(false);
                s.BeginConnect(hostEndPoint, new AsyncCallback(Connected), 
s);///async connection request request 
                // connectDone.WaitOne(1000,false);

            return strRetPage;

        }
        public static void Connected(IAsyncResult iar)
        {
            Socket sock = (Socket)iar.AsyncState;
            try
            {
                sock.EndConnect(iar);
                sock.BeginSend(GlobalVar.GlobalValueByteGet, 0, 
GlobalVar.GlobalValueByteGet.Length, SocketFlags.None, new 
AsyncCallback(SendData), sock);


            }
            catch (SocketException)
            {
                Console.WriteLine("Unable to connect to host");
            }
        }
        static void ReceivedData(IAsyncResult iar)
        {
            //I dont get a response from the server here i dont stop here at 
break point
            //its eather my code is wring or the fix message is wrong
            Socket remote = (Socket)iar.AsyncState;
            int recv = remote.EndReceive(iar);
            string receivedData = 
Encoding.ASCII.GetString(GlobalVar.GlobalValueByteGetreceive, 0, recv);
            Console.WriteLine(receivedData);
        }
        private static void SendData(IAsyncResult iar)
        {

          
            // ManualResetEvent connectDone = new ManualResetEvent(false);
            Socket server = (Socket)iar.AsyncState;
            int sent = server.EndSend(iar);
            server.BeginReceive(GlobalVar.GlobalValueByteGetreceive, 0, 
GlobalVar.GlobalValueByteGetreceive.Length, SocketFlags.None, new 
AsyncCallback(ReceivedData), server);
            // connectDone.WaitOne(3000);
        }
        public static string sha256encrypt(string phrase)
        {
            UTF8Encoding encoder = new UTF8Encoding();
            SHA256Managed sha256hasher = new SHA256Managed();
            byte[] hashedDataBytes = 
sha256hasher.ComputeHash(encoder.GetBytes(phrase));
            return byteArrayToString(hashedDataBytes);
        }

        public static string byteArrayToString(byte[] inputArray)
        {
            StringBuilder output = new StringBuilder("");
            for (int i = 0; i < inputArray.Length; i++)
            {
                output.Append(inputArray[i].ToString("X2"));
            }
            return output.ToString();
        }

    }
} 
I am sending this string as my login message 
8=FIX.4.4/9=136/35=A/49=****/56=MBT/34=1/52=20091230-18:41:27/98=0/108=30/554=AD8C8A0692F9B051E0A6CA3ED6123F7430C3CBF08E3ABF15E54F47D92E93C3C7/10=118/
and  don't get any response  which means i am not getting into ReceivedData 
function 
I am stuck at this point and I wil be glad to get some direction what is the 
problem 
(might be my c# code or my fix string)

best regards
eyal


[You can unsubscribe from this discussion group by sending a message to 
mailto:[email protected]]

--

You received this message because you are subscribed to the Google Groups 
"Financial Information eXchange" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/fix-protocol?hl=en.


Reply via email to