|
@@ -15,6 +15,7 @@ using DotNetty.Transport.Channels;
|
15
|
15
|
using DotNetty.Transport.Channels.Sockets;
|
16
|
16
|
using DotNettyFrom.common;
|
17
|
17
|
using DotNettyFrom.config;
|
|
18
|
+using DotNettyFrom.generatecmd;
|
18
|
19
|
using DotNettyFrom.util;
|
19
|
20
|
|
20
|
21
|
namespace DotNettyFrom.netty
|
|
@@ -23,11 +24,11 @@ namespace DotNettyFrom.netty
|
23
|
24
|
{
|
24
|
25
|
private MultithreadEventLoopGroup _group;
|
25
|
26
|
private NettyClientHandler _clientHandler;
|
26
|
|
- private static bool _isSendLoginCmd = true;
|
|
27
|
+ private static string LoginCmd = null;
|
27
|
28
|
|
28
|
|
- public void StartNetty(string host, int port, bool isSendLoginCmd = true)
|
|
29
|
+ public void StartNetty(string host, int port, string loginCmd)
|
29
|
30
|
{
|
30
|
|
- _isSendLoginCmd = isSendLoginCmd;
|
|
31
|
+ LoginCmd = loginCmd;
|
31
|
32
|
IPAddress hostIp = IPAddress.Parse(host);
|
32
|
33
|
RunClientAsync(hostIp, port);
|
33
|
34
|
DataModel.ReceCollection.Add(new UIInfoModel("StartNetty:开始尝试连接").setSendType(SystemConfig.DebugType));
|
|
@@ -106,15 +107,13 @@ namespace DotNettyFrom.netty
|
106
|
107
|
DataModel.ReceCollection.Add(new UIInfoModel("ChannelActive:连接成功").setAction(1)
|
107
|
108
|
.setSendType(SystemConfig.DebugType));
|
108
|
109
|
|
109
|
|
- if (_isSendLoginCmd)
|
|
110
|
+ if (LoginCmd != null)
|
110
|
111
|
{
|
111
|
112
|
//发送登录指令
|
112
|
|
- IByteBuffer cmd =
|
113
|
|
- AryUtil.Hex2IByteBuffer("7e7e7e0000000000018200143839383630324731313931353530333339393137e3");
|
|
113
|
+ IByteBuffer cmd = AryUtil.Hex2IByteBuffer(LoginCmd);
|
114
|
114
|
context.WriteAndFlushAsync(cmd);
|
115
|
|
- DataModel.ReceCollection.Add(
|
116
|
|
- new UIInfoModel("发送登录", "7e7e7e0000000000018200143839383630324731313931353530333339393137e3")
|
117
|
|
- .setAction(1).setSendType(SystemConfig.SendType));
|
|
115
|
+ DataModel.ReceCollection.Add(new UIInfoModel("发送登录", LoginCmd)
|
|
116
|
+ .setAction(1).setSendType(SystemConfig.SendType));
|
118
|
117
|
}
|
119
|
118
|
}
|
120
|
119
|
|
|
@@ -126,16 +125,30 @@ namespace DotNettyFrom.netty
|
126
|
125
|
string recCmd = AryUtil.ByteBuffer2Hex(buffer);
|
127
|
126
|
DataModel.ReceCollection.Add(new UIInfoModel("收到", recCmd));
|
128
|
127
|
}
|
|
128
|
+ else
|
|
129
|
+ {
|
|
130
|
+ Console.WriteLine("Other ChannelRead");
|
|
131
|
+ }
|
129
|
132
|
}
|
130
|
133
|
|
131
|
|
- public override void ChannelReadComplete(IChannelHandlerContext context)
|
132
|
|
- {
|
133
|
|
- base.ChannelReadComplete(context);
|
134
|
|
- }
|
135
|
134
|
|
136
|
135
|
public override void UserEventTriggered(IChannelHandlerContext context, object evt)
|
137
|
136
|
{
|
138
|
|
- base.UserEventTriggered(context, evt);
|
|
137
|
+ IdleStateEvent state = (IdleStateEvent) evt;
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+ if (state == IdleStateEvent.ReaderIdleStateEvent)
|
|
141
|
+ {
|
|
142
|
+ }
|
|
143
|
+ else if (state == IdleStateEvent.WriterIdleStateEvent)
|
|
144
|
+ {
|
|
145
|
+ string hb = CmdGenetor.GetInstance().GetHeartbeat();
|
|
146
|
+ context.Channel.WriteAndFlushAsync(AryUtil.Hex2IByteBuffer(hb));
|
|
147
|
+ DataModel.ReceCollection.Add(new UIInfoModel("发送", hb).setSendType(SystemConfig.SendType));
|
|
148
|
+ }
|
|
149
|
+ else
|
|
150
|
+ {
|
|
151
|
+ }
|
139
|
152
|
}
|
140
|
153
|
|
141
|
154
|
public override void ExceptionCaught(IChannelHandlerContext context, Exception exception)
|