사용 UdpClient IPv4 와 IPv6?
-
20-09-2019 - |
문제
조금 전에 내가 만들어 클래스를 다루는 내 LAN 네트워킹 프로그램입니다.나는 최근 업그레이드 하나의 노트북 windows7 와 더 작성하면 안되는 윈도우 7(또는 적어도 내가 설정한다)지원 IPv6,하지만 내 바탕 화면 아직도 뒤에서 윈도우 xp 에서 일에만 사용하여 IPv4.클래스를 만들었을 사용하 UdpClient 클래스,그리고 현재 설치만으로 작업 IPv4..는 방법이 있을 수정 나의 코드를 허용하는의 전송 및 수신 IPv6and IPv4 패킷??그것은 것 하드를 스크랩하는 클래스 코드는,많은 나의 프로그램에 의존하는 이 클래스입니다.나를 유지하고 싶은 클래스에 가까운 그것의 원래 상태로 그래서 내가 필요하지 않을 수정 나의 프로그램,단위치 오래된 클래스에 대한 업데이트됩니다.
감사에 대한 모든 도움말 Max
보내기:
using System.Net.Sockets;UdpClient tub = new UdpClient ();
tub.Connect ( new IPEndPoint ( ToIP, ToPort ) );
UdpState s = new UdpState ();
s.client = tub;
s.endpoint = new IPEndPoint ( ToIP, ToPort );
tub.BeginSend ( data, data.Length, new AsyncCallback ( SendCallBack ),s);
private void SendCallBack ( IAsyncResult result )
{
UdpClient client = (UdpClient)( (UdpState)( result.AsyncState ) ).client;
IPEndPoint endpoint = (IPEndPoint)( (UdpState)( result.AsyncState ) ).endpoint;
client.EndSend ( result );
}
Receive:
UdpClient tub = new UdpClient (ReceivePort);
UdpState s = new UdpState ();
s.client = tub;
s.endpoint = new IPEndPoint ( ReceiveIP, ReceivePort );
s.callback = cb;
tub.BeginReceive ( new AsyncCallback ( receivedPacket ), s );
public void receivedPacket (IAsyncResult result)
{
UdpClient client = (UdpClient)( (UdpState)( result.AsyncState ) ).client;
IPEndPoint endpoint = (IPEndPoint)( (UdpState)( result.AsyncState ) ).endpoint;
Byte[] receiveBytes = client.EndReceive ( result, ref endpoint );
Packet ThePacket = new Packet ( receiveBytes );
client.Close();
//Do what ever with the 'ThePacket' now
}
해결책
나는 생각이 당신을 도울 수 있: C#server 을 지원하는 IPv6and IPv4 같은 포트에서
다른 팁
UdpClient 할 수 있을 받을 준비가 되어에 IPv4 와 IPv6 을 모두를 제공하여 DualMode socket:
socket = new Socket(AddressFamily.InterNetworkV6, SocketType.Dgram, ProtocolType.Udp);
socket.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, false);
socket.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234));
var udpClient = new UdpClient();
udpClient.Client = socket;
... (use udpClient)
보내는 것이 쉽을 만들 수 있습니다 UdpClient 지정된 목표 주소(IPv4/IPv6).AddressFamily 제공할 수 있습에서 생성자의 경우,필요합니다.
제휴하지 않습니다 StackOverflow