문제

조금 전에 내가 만들어 클래스를 다루는 내 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 제공할 수 있습에서 생성자의 경우,필요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top