From 117191bd6428d2dfce1a17f79f5950665b76b533 Mon Sep 17 00:00:00 2001 From: lights li Date: Sat, 26 Aug 2017 19:10:54 +0800 Subject: [PATCH] fix zero connect --- neo/Network/TcpRemoteNode.cs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/neo/Network/TcpRemoteNode.cs b/neo/Network/TcpRemoteNode.cs index 09eb7eaea7..d5968f5d5f 100644 --- a/neo/Network/TcpRemoteNode.cs +++ b/neo/Network/TcpRemoteNode.cs @@ -26,7 +26,7 @@ public TcpRemoteNode(LocalNode localNode, Socket socket) : base(localNode) { this.socket = socket; - OnConnected(); + OnConnectedListener();//別人連我 } public async Task ConnectAsync() @@ -37,9 +37,9 @@ public async Task ConnectAsync() try { await socket.ConnectAsync(address, ListenerEndpoint.Port); - OnConnected(); + OnConnected();//我連別人 } - catch (SocketException) + catch (SocketException e) { Disconnect(false); return false; @@ -58,9 +58,19 @@ public override void Disconnect(bool error) } private void OnConnected() + { + //发现在我的电脑上 socket.RemoteEndPoint 会抛出异常 + //IPEndPoint remoteEndpoint = (IPEndPoint)socket.RemoteEndPoint; + //RemoteEndpoint = new IPEndPoint(remoteEndpoint.Address.MapToIPv6(), remoteEndpoint.Port); + this.RemoteEndpoint = new IPEndPoint(ListenerEndpoint.Address.MapToIPv6(), ListenerEndpoint.Port); + stream = new NetworkStream(socket); + connected = true; + } + private void OnConnectedListener() { IPEndPoint remoteEndpoint = (IPEndPoint)socket.RemoteEndPoint; RemoteEndpoint = new IPEndPoint(remoteEndpoint.Address.MapToIPv6(), remoteEndpoint.Port); + this.RemoteEndpoint = new IPEndPoint(RemoteEndpoint.Address.MapToIPv6(), RemoteEndpoint.Port); stream = new NetworkStream(socket); connected = true; }