Skip to content

Commit cbd03d1

Browse files
authored
Merge pull request #32 from jay602/1.x
unity sdk .net4.x支持 #1148
2 parents 2d25c1a + 10355d9 commit cbd03d1

File tree

3 files changed

+52
-56
lines changed

3 files changed

+52
-56
lines changed

Assets/Plugins/kbengine_unity3d_plugins/NetworkInterface.cs

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
using System.Text;
1010
using System.Text.RegularExpressions;
1111
using System.Threading;
12-
using System.Runtime.Remoting.Messaging;
1312

1413
using MessageID = System.UInt16;
1514
using MessageLength = System.UInt16;
@@ -37,6 +36,7 @@ public class ConnectState
3736
public string connectIP = "";
3837
public int connectPort = 0;
3938
public ConnectCallback connectCB = null;
39+
public AsyncConnectMethod caller = null;
4040
public object userData = null;
4141
public Socket socket = null;
4242
public NetworkInterface networkInterface = null;
@@ -77,18 +77,18 @@ public void reset()
7777
}
7878

7979

80-
public void close()
81-
{
82-
if(_socket != null)
80+
public void close()
81+
{
82+
if(_socket != null)
8383
{
8484
_socket.Close(0);
8585
_socket = null;
8686
Event.fireAll(EventOutTypes.onDisconnected);
87-
}
87+
}
8888

89-
_socket = null;
90-
connected = false;
91-
}
89+
_socket = null;
90+
connected = false;
91+
}
9292

9393
public virtual PacketReceiver packetReceiver()
9494
{
@@ -168,13 +168,11 @@ private void _asyncConnect(ConnectState state)
168168
private void _asyncConnectCB(IAsyncResult ar)
169169
{
170170
ConnectState state = (ConnectState)ar.AsyncState;
171-
AsyncResult result = (AsyncResult)ar;
172-
AsyncConnectMethod caller = (AsyncConnectMethod)result.AsyncDelegate;
173171

174172
Dbg.DEBUG_MSG(string.Format("NetWorkInterface::_asyncConnectCB(), connect to '{0}:{1}' finish. error = '{2}'", state.connectIP, state.connectPort, state.error));
175173

176174
// Call EndInvoke to retrieve the results.
177-
caller.EndInvoke(ar);
175+
state.caller.EndInvoke(ar);
178176
Event.fireIn("_onConnectionState", new object[] { state });
179177
}
180178

@@ -196,22 +194,24 @@ public void connectTo(string ip, int port, ConnectCallback callback, object user
196194
_socket.NoDelay = true;
197195
//_socket.Blocking = false;
198196

197+
AsyncConnectMethod asyncConnectMethod = new AsyncConnectMethod(this._asyncConnect);
198+
199199
ConnectState state = new ConnectState();
200200
state.connectIP = ip;
201201
state.connectPort = port;
202202
state.connectCB = callback;
203203
state.userData = userData;
204204
state.socket = _socket;
205205
state.networkInterface = this;
206+
state.caller = asyncConnectMethod;
206207

207208
Dbg.DEBUG_MSG("connect to " + ip + ":" + port + " ...");
208209
connected = false;
209210

210211
// 先注册一个事件回调,该事件在当前线程触发
211212
Event.registerIn("_onConnectionState", this, "_onConnectionState");
212213

213-
var v = new AsyncConnectMethod(this._asyncConnect);
214-
v.BeginInvoke(state, new AsyncCallback(this._asyncConnectCB), state);
214+
asyncConnectMethod.BeginInvoke(state, new AsyncCallback(this._asyncConnectCB), state);
215215
}
216216

217217
public bool send(MemoryStream stream)
@@ -224,10 +224,10 @@ public bool send(MemoryStream stream)
224224
if (_packetSender == null)
225225
_packetSender = new PacketSender(this);
226226

227-
if (_filter != null)
228-
return _filter.send(_packetSender, stream);
227+
if (_filter != null)
228+
return _filter.send(_packetSender, stream);
229229

230-
return _packetSender.send(stream);
230+
return _packetSender.send(stream);
231231
}
232232

233233
public void process()
@@ -238,14 +238,14 @@ public void process()
238238
if (_packetReceiver != null)
239239
_packetReceiver.process();
240240
}
241-
public EncryptionFilter fileter()
242-
{
243-
return _filter;
244-
}
241+
public EncryptionFilter fileter()
242+
{
243+
return _filter;
244+
}
245245

246-
public void setFilter(EncryptionFilter filter)
247-
{
248-
_filter = filter;
249-
}
250-
}
246+
public void setFilter(EncryptionFilter filter)
247+
{
248+
_filter = filter;
249+
}
250+
}
251251
}

Assets/Plugins/kbengine_unity3d_plugins/PacketReceiver.cs

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
using System.Text;
99
using System.Text.RegularExpressions;
1010
using System.Threading;
11-
using System.Runtime.Remoting.Messaging;
1211

1312
using MessageID = System.UInt16;
1413
using MessageLength = System.UInt16;
@@ -61,31 +60,31 @@ public void process()
6160

6261
if (_rpos < t_wpos)
6362
{
64-
if (_networkInterface.fileter() != null)
65-
{
66-
_networkInterface.fileter().recv(messageReader, _buffer, (UInt32)_rpos, (UInt32)(t_wpos - _rpos));
67-
}
68-
else
69-
{
70-
messageReader.process(_buffer, (UInt32)_rpos, (UInt32)(t_wpos - _rpos));
71-
}
72-
73-
Interlocked.Exchange(ref _rpos, t_wpos);
63+
if (_networkInterface.fileter() != null)
64+
{
65+
_networkInterface.fileter().recv(messageReader, _buffer, (UInt32)_rpos, (UInt32)(t_wpos - _rpos));
66+
}
67+
else
68+
{
69+
messageReader.process(_buffer, (UInt32)_rpos, (UInt32)(t_wpos - _rpos));
70+
}
71+
72+
Interlocked.Exchange(ref _rpos, t_wpos);
7473
}
7574
else if (t_wpos < _rpos)
7675
{
77-
if (_networkInterface.fileter() != null)
78-
{
79-
_networkInterface.fileter().recv(messageReader, _buffer, (UInt32)_rpos, (UInt32)(_buffer.Length - _rpos));
80-
_networkInterface.fileter().recv(messageReader, _buffer, (UInt32)0, (UInt32)t_wpos);
81-
}
82-
else
83-
{
84-
messageReader.process(_buffer, (UInt32)_rpos, (UInt32)(_buffer.Length - _rpos));
85-
messageReader.process(_buffer, (UInt32)0, (UInt32)t_wpos);
86-
}
87-
88-
Interlocked.Exchange(ref _rpos, t_wpos);
76+
if (_networkInterface.fileter() != null)
77+
{
78+
_networkInterface.fileter().recv(messageReader, _buffer, (UInt32)_rpos, (UInt32)(_buffer.Length - _rpos));
79+
_networkInterface.fileter().recv(messageReader, _buffer, (UInt32)0, (UInt32)t_wpos);
80+
}
81+
else
82+
{
83+
messageReader.process(_buffer, (UInt32)_rpos, (UInt32)(_buffer.Length - _rpos));
84+
messageReader.process(_buffer, (UInt32)0, (UInt32)t_wpos);
85+
}
86+
87+
Interlocked.Exchange(ref _rpos, t_wpos);
8988
}
9089
else
9190
{
@@ -118,8 +117,8 @@ int _free()
118117
public void startRecv()
119118
{
120119

121-
var v = new AsyncReceiveMethod(this._asyncReceive);
122-
v.BeginInvoke(new AsyncCallback(_onRecv), null);
120+
AsyncReceiveMethod asyncReceiveMethod = new AsyncReceiveMethod(this._asyncReceive);
121+
asyncReceiveMethod.BeginInvoke(new AsyncCallback(_onRecv), asyncReceiveMethod);
123122
}
124123

125124
private void _asyncReceive()
@@ -185,8 +184,7 @@ private void _asyncReceive()
185184

186185
private void _onRecv(IAsyncResult ar)
187186
{
188-
AsyncResult result = (AsyncResult)ar;
189-
AsyncReceiveMethod caller = (AsyncReceiveMethod)result.AsyncDelegate;
187+
AsyncReceiveMethod caller = (AsyncReceiveMethod)ar.AsyncState;
190188
caller.EndInvoke(ar);
191189
}
192190
}

Assets/Plugins/kbengine_unity3d_plugins/PacketSender.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
using System.Text;
99
using System.Text.RegularExpressions;
1010
using System.Threading;
11-
using System.Runtime.Remoting.Messaging;
1211

1312
using MessageID = System.UInt16;
1413
using MessageLength = System.UInt16;
@@ -128,7 +127,7 @@ void _startSend()
128127
{
129128
// 由于socket用的是非阻塞式,因此在这里不能直接使用socket.send()方法
130129
// 必须放到另一个线程中去做
131-
_asyncSendMethod.BeginInvoke(_asyncCallback, null);
130+
_asyncSendMethod.BeginInvoke(_asyncCallback, _asyncSendMethod);
132131
}
133132

134133
void _asyncSend()
@@ -183,8 +182,7 @@ void _asyncSend()
183182

184183
private static void _onSent(IAsyncResult ar)
185184
{
186-
AsyncResult result = (AsyncResult)ar;
187-
AsyncSendMethod caller = (AsyncSendMethod)result.AsyncDelegate;
185+
AsyncSendMethod caller = (AsyncSendMethod)ar.AsyncState;
188186
caller.EndInvoke(ar);
189187
}
190188
}

0 commit comments

Comments
 (0)