Local пре 5 година
родитељ
комит
54557b4ca2
1 измењених фајлова са 16 додато и 1 уклоњено
  1. 16 1
      UdPunching.ExampleW/ExampleForm.cs

+ 16 - 1
UdPunching.ExampleW/ExampleForm.cs

@@ -214,12 +214,25 @@ namespace UdPunching.ExampleW
                         break;
 
                     case ExchangeMessageId.PeerKnockAckRelay:
+                        if (false == msg.PeerId.HasValue)
+                        {
+                            Log($"INVALID RESPONSE {msg.Id} was IGNORED: peer id is required");
+                            break;
+                        }
+
                         Log($"KNOCK SUCCESS by {msg.PeerId} peer endpont is {msg.PeerEndPoint}");
                         Invoke(new Action(() =>
                         {
                             SendToEndPointTextBox.Text = msg.PeerEndPoint.ToString();
                             SendButton.Enabled = true;
                         }));
+
+                        {
+                            Log($"SENDING CONNECTION REQ to {msg.PeerId} @ {msg.PeerEndPoint}");
+                            var connMsg = new ExchangeMessage(ExchangeMessageId.PeerKnockConnectionReq);
+                            var connMsgBytes = TransferCodec.Encode(_peerKeyRegister[msg.PeerId.Value], _localId, connMsg.ToBytes());
+                            _localSocket.SendTo(connMsgBytes, msg.PeerEndPoint);
+                        }
                         break;
 
                     case ExchangeMessageId.PeerKnockAckRelayed:
@@ -227,7 +240,7 @@ namespace UdPunching.ExampleW
                         break;
 
                     case ExchangeMessageId.PeerKnockReqErrPeerNoAvailable:
-                        Log($"KNOCK FAIL:{msg.Id} {msg.PeerId}");
+                        Log($"KNOCK FAIL: {msg.PeerId}");
                         break;
 
                     case ExchangeMessageId.PeerKnockReqRelayed:
@@ -273,10 +286,12 @@ namespace UdPunching.ExampleW
                             Log($"DATA FROM {peerId}:{payloadString}");
                             reply.PayloadBytes = payloadString.Length.ToLeInt16Bytes();
                             break;
+
                         case ExchangeMessageId.DataTransferAck:
                             Log($"DATA ACK LEN:{msg.PayloadBytes.ReadLeInt16()} FROM {peerId}");
 
                             return;
+
                         default:
                             Log($"RECV {msg.Id} FROM {peerId} @ {_saeReceive.RemoteEndPoint}");
                             return;