듀얼 ..
슬프빈다.
udpclient에 dualmode를 사용하는데 이케하면 ipv6 기반으로 작동하지만 ipv4도 되빈다.
이케 하였는데 ipv4 stun 요청은 콜백을 못 받았쩌. 수신을 못 받은 것이 아니고 콜백이어요.
수신을 게시할 74.126.250.129 주소를 넣었는데 콜백은 ::ffff:74.126.250.129 이케 되어서 이럼 콜백 함수로 갈 수 가 없쩌. 머리가 아프빈다. 이럼 ai를 사용하여야 하겠쩌. 대충 4바이트 떼서 써라고 하빈다.
주의 사항은 ipv6 에 ipv4를 끼워넣으면 0:0:0:ffff:74:126:250:129 처럼 되어서 앞에 8바이트를 확신해야 고장나지 않스빈다. 또 머 ai를 맹신하면 안 대는데 분명 영화 업그래이드 2018에 나(stem) 맹신하지 마세요라고 해쩌. (sy)stem .. 이름 작명이 앵간하빈다. 끝에 바이트를 떼서 쓸 때는 띄우고 바이트 띄우고 바이트 띄우고 바이트 띄우고 바이트로 읽어야 하빈다. 신뢰성이 낮은 gpt 3.5에 ai응답이 잘못되었쩌. 결과적으로 -bytes[9] bytes[11] bytes[13] bytes[15]-가 댈꺼빈다. 솔까 머 노드js에서도 같은 형상이 나타나빈다. 리눅스도 이런지 모르곘지만 아마도 비슷할 것이어요. 머 애초에 커널을 더 정교하게 만들었으면 이것도 ipv4를 넣었으면 ipv4 주소가 나오는 대응 할 수 있었지 않았겠나요.
먼가 이상한데 .. 망했는 것 같스빈다.

실질적으로는 ::ffff:1.1.1.1 이케 콜론이 아니고 닷으로 표현하는데 바이트 끝에 4개를 뜯어 사용하는 것이 맞았쩌. 이럼 ai 응답이 맞스빈다.

IPAddress.IsIPv4MappedToIPv6 속성 (System.Net) | Microsoft Learn
c#에서 ipv4 mapped ipv6 주소에서 ipv4 주소를 가져오는 코드는 어떻게 될까
C#에서 IPv4 mapped IPv6 주소에서 IPv4 주소를 가져오는 코드는 다음과 같습니다:
```csharp
using System;
using System.Net;
public static class IPAddressExtensions
{
public static IPAddress GetIPv4AddressFromIPv6MappedAddress(this IPAddress ipv6Address)
{
if (ipv6Address.AddressFamily != AddressFamily.InterNetworkV6)
{
throw new ArgumentException("The provided IP address is not an IPv6 address.", nameof(ipv6Address));
}
byte[] bytes = ipv6Address.GetAddressBytes();
if (bytes.Length != 16)
{
throw new ArgumentException("The provided IPv6 address is not a mapped IPv4 address.", nameof(ipv6Address));
}
return new IPAddress(new byte[] { bytes[7], bytes[8], bytes[9], bytes[10] });
}
}
// 사용 예시
string ipv6MappedAddress = "::ffff:192.168.1.1";
IPAddress ipv6Address = IPAddress.Parse(ipv6MappedAddress);
IPAddress ipv4Address = ipv6Address.GetIPv4AddressFromIPv6MappedAddress();
Console.WriteLine(ipv4Address); // 출력: 192.168.1.1
```
이 코드는 IPAddressExtensions 클래스에 GetIPv4AddressFromIPv6MappedAddress 확장 메서드를 정의하고 있습니다. 이 메서드는 IPv6 주소를 입력으로 받아 IPv4 주소를 반환합니다. 먼저 입력된 IP 주소가 IPv6 주소인지 확인하고, IPv6 주소인 경우 해당 주소의 바이트 배열을 가져옵니다. 그리고 IPv4 주소의 첫 4바이트를 추출하여 새로운 IPv4 주소를 생성합니다.
사용 예시에서는 IPv4 mapped IPv6 주소를 문자열로 입력하고, IPAddress.Parse 메서드를 사용하여 IPv6 주소로 변환한 후, GetIPv4AddressFromIPv6MappedAddress 확장 메서드를 호출하여 IPv4 주소를 가져옵니다. 마지막으로 IPv4 주소를 출력합니다.
