Local %!s(int64=5) %!d(string=hai) anos
pai
achega
54557b4ca2
Modificáronse 1 ficheiros con 16 adicións e 1 borrados
  1. 16 1
      UdPunching.ExampleW/ExampleForm.cs

+ 16 - 1
UdPunching.ExampleW/ExampleForm.cs

@@ -214,12 +214,25 @@ namespace UdPunching.ExampleW
                         break;
                         break;
 
 
                     case ExchangeMessageId.PeerKnockAckRelay:
                     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}");
                         Log($"KNOCK SUCCESS by {msg.PeerId} peer endpont is {msg.PeerEndPoint}");
                         Invoke(new Action(() =>
                         Invoke(new Action(() =>
                         {
                         {
                             SendToEndPointTextBox.Text = msg.PeerEndPoint.ToString();
                             SendToEndPointTextBox.Text = msg.PeerEndPoint.ToString();
                             SendButton.Enabled = true;
                             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;
                         break;
 
 
                     case ExchangeMessageId.PeerKnockAckRelayed:
                     case ExchangeMessageId.PeerKnockAckRelayed:
@@ -227,7 +240,7 @@ namespace UdPunching.ExampleW
                         break;
                         break;
 
 
                     case ExchangeMessageId.PeerKnockReqErrPeerNoAvailable:
                     case ExchangeMessageId.PeerKnockReqErrPeerNoAvailable:
-                        Log($"KNOCK FAIL:{msg.Id} {msg.PeerId}");
+                        Log($"KNOCK FAIL: {msg.PeerId}");
                         break;
                         break;
 
 
                     case ExchangeMessageId.PeerKnockReqRelayed:
                     case ExchangeMessageId.PeerKnockReqRelayed:
@@ -273,10 +286,12 @@ namespace UdPunching.ExampleW
                             Log($"DATA FROM {peerId}:{payloadString}");
                             Log($"DATA FROM {peerId}:{payloadString}");
                             reply.PayloadBytes = payloadString.Length.ToLeInt16Bytes();
                             reply.PayloadBytes = payloadString.Length.ToLeInt16Bytes();
                             break;
                             break;
+
                         case ExchangeMessageId.DataTransferAck:
                         case ExchangeMessageId.DataTransferAck:
                             Log($"DATA ACK LEN:{msg.PayloadBytes.ReadLeInt16()} FROM {peerId}");
                             Log($"DATA ACK LEN:{msg.PayloadBytes.ReadLeInt16()} FROM {peerId}");
 
 
                             return;
                             return;
+
                         default:
                         default:
                             Log($"RECV {msg.Id} FROM {peerId} @ {_saeReceive.RemoteEndPoint}");
                             Log($"RECV {msg.Id} FROM {peerId} @ {_saeReceive.RemoteEndPoint}");
                             return;
                             return;