Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
T
Thick-Common
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
潘栩锋
Thick-Common
Commits
31ba36a1
Commit
31ba36a1
authored
Aug 23, 2023
by
潘栩锋
🚴
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
obj系统 AD盒添加 绑定本地ip&port, 解决多个AD盒IP地址一样,使用多个网卡连接
parent
6b9fde5f
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
179 additions
and
20 deletions
+179
-20
FObjSys.cs
Project.FLY.FObjSys/FObjSys/FObjSys.cs
+88
-2
TCPCConn.cs
Project.FLY.FObjSys/FObjSys/TCPCConn.cs
+42
-2
FlyAD7.cs
Project.FLY.FlyADBase/FlyADBase/FlyAD7.cs
+43
-15
IFlyADClient.cs
Project.FLY.FlyADBase/FlyADBase/IFlyADClient.cs
+5
-0
livecharts
livecharts
+1
-1
No files found.
Project.FLY.FObjSys/FObjSys/FObjSys.cs
View file @
31ba36a1
...
...
@@ -448,7 +448,7 @@ namespace FObjBase
try
{
KeyValuePair
<
TCPCConn
,
List
<
UInt32
>>
cc_kv
;
cc_kv
=
m_cconns
.
First
(
_cc
=>
_cc
.
Key
.
RemoteEP
.
Equals
(
ep
));
cc_kv
=
m_cconns
.
First
(
_cc
=>
_cc
.
Key
.
IsSame
(
ep
));
cc_kv
.
Value
.
AddRange
(
objids
);
//已经存在此连接,通知
if
(
cc_kv
.
Key
.
IsConnected
)
...
...
@@ -475,6 +475,48 @@ namespace FObjBase
return
conn
;
}
}
/// <summary>
/// 连接到远端的OBJSys连接
/// </summary>
/// <param name="ep">远端地址</param>
/// <param name="localEP>本地地址</param>
/// <param name="objids">连接成功后,通知这些obj</param>
/// <returns></returns>
public
TCPCConn
Connect_to_Another_OBJSys
(
IPEndPoint
ep
,
IPEndPoint
localEP
,
params
UInt32
[]
objids
)
{
try
{
KeyValuePair
<
TCPCConn
,
List
<
UInt32
>>
cc_kv
;
cc_kv
=
m_cconns
.
First
(
_cc
=>
_cc
.
Key
.
IsSame
(
ep
,
localEP
));
cc_kv
.
Value
.
AddRange
(
objids
);
//已经存在此连接,通知
if
(
cc_kv
.
Key
.
IsConnected
)
{
foreach
(
UInt32
objid
in
objids
)
{
IFObj
obj
=
Find
(
objid
);
if
(
obj
!=
null
)
obj
.
ConnectNotify
(
cc_kv
.
Key
);
}
}
return
cc_kv
.
Key
;
}
catch
{
TCPCConn
conn
=
new
TCPCConn
(
ep
)
{
LocalEP
=
localEP
,
ParsePacket
=
new
ParsePacketHandler
(
ParsePacketInClient
),
ConnectAction
=
new
ConnectHandler
(
CConnConnectAction
),
Enable
=
true
};
m_cconns
.
Add
(
conn
,
new
List
<
uint
>(
objids
));
return
conn
;
}
}
/// <summary>
/// 断开到远端OBJSys的连接
/// </summary>
...
...
@@ -486,7 +528,7 @@ namespace FObjBase
try
{
KeyValuePair
<
TCPCConn
,
List
<
UInt32
>>
cc_kv
;
cc_kv
=
m_cconns
.
First
(
_cc
=>
_cc
.
Key
.
RemoteEP
.
Equals
(
ep
));
cc_kv
=
m_cconns
.
First
(
_cc
=>
_cc
.
Key
.
IsSame
(
ep
));
cc_kv
.
Value
.
RemoveAll
(
objid
=>
objids
.
Contains
(
objid
));
//删除大通讯的trans
...
...
@@ -519,7 +561,51 @@ namespace FObjBase
}
}
/// <summary>
/// 断开到远端OBJSys的连接
/// </summary>
/// <param name="ep">远端地址</param>
/// <param name="localEP">本地地址</param>
/// <param name="objids">连接成功后,通知这些obj</param>
/// <returns></returns>
public
void
Disconnect_to_Another_OBJSys
(
IPEndPoint
ep
,
IPEndPoint
localEP
,
params
UInt32
[]
objids
)
{
try
{
KeyValuePair
<
TCPCConn
,
List
<
UInt32
>>
cc_kv
;
cc_kv
=
m_cconns
.
First
(
_cc
=>
_cc
.
Key
.
IsSame
(
ep
,
localEP
));
cc_kv
.
Value
.
RemoveAll
(
objid
=>
objids
.
Contains
(
objid
));
//删除大通讯的trans
Transactions
.
RemoveAll
(
t
=>
objids
.
Contains
(
t
.
SrcObjID
));
if
(
cc_kv
.
Key
.
IsConnected
)
//它的连接是正常的,通知objids,说连接断开了
{
foreach
(
UInt32
objid
in
objids
)
{
IFObj
obj
=
Find
(
objid
);
if
(
obj
!=
null
)
obj
.
ConnectNotify
(
new
TCPCConn
(
ep
)
{
LocalEP
=
localEP
,
Enable
=
false
});
}
}
if
(
cc_kv
.
Value
.
Count
==
0
)
//已经没有obj需要连接了,删除conn
{
cc_kv
.
Key
.
Enable
=
false
;
m_cconns
.
Remove
(
cc_kv
.
Key
);
}
}
catch
{
}
}
/// <summary>
/// 注册本地obj 为远端obj的敏感对象,得到远端obj的推送消息
...
...
Project.FLY.FObjSys/FObjSys/TCPCConn.cs
View file @
31ba36a1
...
...
@@ -10,17 +10,43 @@ namespace FObjBase
//客户端长时间不通讯,必须发送 Send_HeartBeat
public
class
TCPCConn
:
TCPConn
{
enum
STATE
enum
STATE
{
Connected
,
Not_Connect
,
Connecting
,
Err_Connect
Err_Connect
}
private
STATE
state
;
private
DateTime
conn_delay_time
;
public
IPEndPoint
LocalEP
{
get
;
set
;
}
=
null
;
public
bool
IsSame
(
IPEndPoint
remoteEp
)
{
return
RemoteEP
.
Equals
(
remoteEp
);
}
public
bool
IsSame
(
IPEndPoint
remoteEp
,
IPEndPoint
localEp
)
{
if
(!
RemoteEP
.
Equals
(
remoteEp
))
return
false
;
if
(
LocalEP
==
null
)
{
if
(
localEp
==
null
)
return
true
;
else
return
false
;
}
else
{
if
(
localEp
==
null
)
return
false
;
return
LocalEP
.
Equals
(
localEp
);
}
}
private
IPEndPoint
ep
=
new
IPEndPoint
(
IPAddress
.
Any
,
20006
);
/// <summary>
/// 远端地址
...
...
@@ -58,6 +84,7 @@ namespace FObjBase
{
sock
=
new
Socket
(
AddressFamily
.
InterNetwork
,
SocketType
.
Stream
,
ProtocolType
.
Tcp
);
sock
.
Blocking
=
false
;
state
=
STATE
.
Not_Connect
;
PollModule
.
Current
.
Poll_Config
(
PollModule
.
POLL_CONFIG
.
ADD
,
onpoll_func
,
TimeSpan
.
FromMilliseconds
(
1
));
...
...
@@ -91,6 +118,19 @@ namespace FObjBase
case
STATE
.
Not_Connect
:
try
{
if
(
LocalEP
!=
null
)
{
if
(
sock
.
LocalEndPoint
!=
null
)
{
if
(!
sock
.
LocalEndPoint
.
Equals
(
LocalEP
))
sock
.
Bind
(
LocalEP
);
}
else
{
sock
.
Bind
(
LocalEP
);
}
}
sock
.
Connect
(
RemoteEP
);
}
catch
(
SocketException
e
)
...
...
Project.FLY.FlyADBase/FlyADBase/FlyAD7.cs
View file @
31ba36a1
...
...
@@ -37,6 +37,20 @@ namespace FlyADBase
#
endregion
#
region
IFlyADClient
property
/// <summary>
/// 本地网卡地址及端口, 当为null, 由socket动态分配
/// </summary>
public
string
LocalAddr
{
get
;
set
;
}
IPEndPoint
LocalEP
{
get
{
if
(
string
.
IsNullOrEmpty
(
LocalAddr
))
return
null
;
else
return
Misc
.
StringConverter
.
ToIPEndPoint
(
LocalAddr
);
}
}
/// <summary>
/// 连接成功
/// </summary>
...
...
@@ -92,7 +106,7 @@ namespace FlyADBase
/// AD盒地址
/// </summary>
public
string
Addr
{
get
;
set
;
}
=
"192.168.251.10:20006"
;
IPEndPoint
Local
EP
=>
Misc
.
StringConverter
.
ToIPEndPoint
(
Addr
);
IPEndPoint
Remote
EP
=>
Misc
.
StringConverter
.
ToIPEndPoint
(
Addr
);
/// <summary>
/// 从flyad7 获取 的systick 转换的时间
...
...
@@ -1302,17 +1316,7 @@ namespace FlyADBase
{
Addr
=
addr
;
if
(
conn
!=
null
)
{
if
(!
conn
.
RemoteEP
.
Equals
(
LocalEP
))
{
//断开之前的连接
CurrObjSys
.
Disconnect_to_Another_OBJSys
(
conn
.
RemoteEP
,
ID
);
}
}
conn
=
CurrObjSys
.
Connect_to_Another_OBJSys
(
LocalEP
,
ID
);
conn
.
HasCRC
=
HasCRC
;
ReConnect
();
}
/// <summary>
...
...
@@ -1322,11 +1326,33 @@ namespace FlyADBase
{
if
(
conn
!=
null
)
{
//断开之前的连接
CurrObjSys
.
Disconnect_to_Another_OBJSys
(
conn
.
RemoteEP
,
ID
);
if
(
string
.
IsNullOrEmpty
(
LocalAddr
))
{
if
(!
conn
.
IsSame
(
RemoteEP
))
{
//断开之前的连接
CurrObjSys
.
Disconnect_to_Another_OBJSys
(
conn
.
RemoteEP
,
ID
);
}
}
else
{
if
(!
conn
.
IsSame
(
RemoteEP
,
LocalEP
))
{
//断开之前的连接
CurrObjSys
.
Disconnect_to_Another_OBJSys
(
conn
.
RemoteEP
,
conn
.
LocalEP
,
ID
);
}
}
}
if
(
string
.
IsNullOrEmpty
(
LocalAddr
))
{
conn
=
CurrObjSys
.
Connect_to_Another_OBJSys
(
RemoteEP
,
ID
);
}
else
{
conn
=
CurrObjSys
.
Connect_to_Another_OBJSys
(
RemoteEP
,
LocalEP
,
ID
);
}
conn
=
CurrObjSys
.
Connect_to_Another_OBJSys
(
LocalEP
,
ID
);
conn
.
HasCRC
=
HasCRC
;
}
...
...
@@ -1763,6 +1789,7 @@ namespace FlyADBase
if
(
string
.
IsNullOrEmpty
(
jsonDbPath
))
return
false
;
try
{
if
(
File
.
Exists
(
jsonDbPath
))
...
...
@@ -1780,6 +1807,7 @@ namespace FlyADBase
return
false
;
}
public
string
Addr
=
"192.168.251.10:20006"
;
public
string
LocalAddr
=
""
;
public
bool
HasCRC
=
false
;
public
int
GridSmooth
=
0
;
public
int
ADLag
=
0
;
...
...
Project.FLY.FlyADBase/FlyADBase/IFlyADClient.cs
View file @
31ba36a1
...
...
@@ -12,6 +12,11 @@ namespace FlyADBase
/// </summary>
public
interface
IFlyADClient
:
IFlyAD
{
/// <summary>
/// 本地网卡地址及端口, 当为null, 由socket动态分配
/// </summary>
string
LocalAddr
{
get
;
set
;
}
/// <summary>
/// 连接成功
/// </summary>
...
...
livecharts
@
3fd5bff0
Subproject commit
4ed21f891f894ac67a2048af145b7ccc9261ed05
Subproject commit
3fd5bff0cbb36bfff39be5a8839295f43894af16
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment