C# 如何在FIX协议中登录?

C# 如何在FIX协议中登录?,c#,networking,tcp,fix-protocol,C#,Networking,Tcp,Fix Protocol,我是个新来修协议的。我们使用TCP网络流建立连接,然后将修复消息读写到此流。但是当我发送登录消息时,我得到的是0 如果有人能分享一段工作代码,那会很有帮助 NetworkStream stm = openStream(); ASCIIEncoding asen = new ASCIIEncoding(); byte[] ba = asen.GetBytes(data); Console.WriteLine("Transmitting....."); stm.Write(ba, 0, ba.Len

我是个新来修协议的。我们使用TCP网络流建立连接,然后将修复消息读写到此流。但是当我发送登录消息时,我得到的是0

如果有人能分享一段工作代码,那会很有帮助

NetworkStream stm = openStream();
ASCIIEncoding asen = new ASCIIEncoding();
byte[] ba = asen.GetBytes(data);
Console.WriteLine("Transmitting.....");
stm.Write(ba, 0, ba.Length);

byte[] bb = new byte[1024];
while (true)
{
    int k = stm.Read(bb, 0, 1024);
    if (k != 0)
    {
        for (int i = 0; i < k; i++)
            Console.Write(Convert.ToChar(bb[i]));
        Console.Write(k);
    }
}
NetworkStream stm=openStream();
ascienceoding asen=新的ascienceoding();
字节[]ba=asen.GetBytes(数据);
Console.WriteLine(“传输…”);
stm.Write(ba,0,ba.Length);
字节[]bb=新字节[1024];
while(true)
{
intk=stm.Read(bb,0,1024);
如果(k!=0)
{
for(int i=0;i
我假设在发送登录
(35=A)
消息后,您就是发起方

要登录到修复服务器,您需要

  • 连接到修复服务器
  • 发送
    登录消息(35=a)
  • 接收
    登录消息(35=A)
  • 发送和接收心跳消息(35=0)
我建议您使用修复库来处理修复消息。FIX协议有几个消息(
会话消息
应用程序消息
,等等),有些是非常复杂的消息。 我已经使用了dotnet和C++,以及java。 如果您使用库,它将处理所有的
“会话消息”
,您只需要处理
“应用程序消息”
,例如
NewOrderSingle(35=D)
ExecutionReport(35=8)
,等等


要使修复连接保持正常运行,您(或库)需要交换几个
“会话消息”
以同步ID。ID(双方)对于正确接收消息非常重要。

我假设在发送登录
(35=A)
消息后,您就是发起方

要登录到修复服务器,您需要

  • 连接到修复服务器
  • 发送
    登录消息(35=a)
  • 接收
    登录消息(35=A)
  • 发送和接收心跳消息(35=0)
我建议您使用修复库来处理修复消息。FIX协议有几个消息(
会话消息
应用程序消息
,等等),有些是非常复杂的消息。 我已经使用了dotnet和C++,以及java。 如果您使用库,它将处理所有的
“会话消息”
,您只需要处理
“应用程序消息”
,例如
NewOrderSingle(35=D)
ExecutionReport(35=8)
,等等


要使修复连接保持正常运行,您(或库)需要交换几个
“会话消息”
以同步ID。ID(两侧)对于正确接收信息非常重要。

检查您正在使用的库的文档。你贴代码是为了什么?不太了解C#,但这段代码与登录无关。谢谢。这里的数据由登录消息组成。请查看您正在使用的库的文档。你贴代码是为了什么?不太了解C#,但此代码与登录无关。谢谢。这里的数据由登录消息组成。谢谢。我还有一个疑问。我设法使用quickfix登录。我正在接收登录响应。但是应用程序没有使用onlogon方法。另外,当我尝试发送marketdata请求时,它会点击toApp(),但不会被发送出去。你能对此有什么想法吗?我们有几个原因。请在此发布:(1)修复会话日志文件,(2)修复会话事件文件和(3)您的IApplication代码。请在发送之前删除所有密码或重要信息。解决了那个错误,但得到了一个新的。我正在尝试发送MarketDataRequest。返回给我的是未指定55位标记。但是我很确定我指定了那个标签。请求和响应如下。20160622-16:40:27.464:8=FIX.4.49=13035=V34=249=XXXXX 52=20160622-16:40:18.34356=XXXXX 55=GBP146=1262=App123263=1264=0265=0267=2269=010=129 20160622-16:40:27.760:8=FIX.4.49=13334=334=249=XXXXX 52=20160622-16:16:40:28.04956=XXXXX 45=258=258=Tag未定义此消息类型371=55372=193=193,我在消息中还附上了创建代码下面的commentMessage msg=新消息();msg.Header.SetField(新的MsgType(“V”));msg.SetField(新的MDReqID(“PrimoApp123”);msg.SetField(新SubscriptionRequestType('1'));msg.SetField(新市场深度(0));msg.SetField(新的MDUpdateType(0));msg.SetField(新的NoMDEntryTypes(2));msg.SetField(新的MDEntryType('0');msg.SetField(新的norrelatedSym(1));消息设置字段(新符号(“英镑美元”);Session.SendToTarget(msg,FeederApp.mysession);您好,您收到了一条35=3(拒绝)的消息。有多条拒绝消息,但此特定消息与无效协议消息有关。谢谢。我还有一个疑问。我设法使用quickfix登录。我正在接收登录响应。但是应用程序没有使用onlogon方法。另外,当我尝试发送marketdata请求时,它会点击toApp(),但不会被发送出去。你能对此有什么想法吗?我们有几个原因。请在此发布:(1)修复会话日志文件,(2)修复会话事件文件和(3)您的IApplication代码。请在发送之前删除所有密码或重要信息。解决了那个错误,但得到了一个新的。我正在尝试发送MarketDataRequest。返回给我的是未指定55位标记。但是我很确定我指定了那个标签。请求和响应如下。20160622-16:40:27.464:8=FIX.4.49=13035=V34=249=XXXXX 52=20160622-16:40:18.34356=XXXXX 55=GBP146=1262=App123263=1264=0265=0267=2269=010=129 20160622-16:40:27.760:8=FIX.4.49=13335=334=249=XXXXX 52=20160622-16:4