2013-10-27 21 views
5

çoklu ağ ile ağ UDP -Şu anda aşağıdaki kurulum ile 2 ağ arayüzleri ile benim makinede bir ağ uygulama geliştiriyorum

Current network setting

Ben IP ile ilk yapılandırmayı kullanarak UDP mesajı göndermek istiyorum 192.168.1.2. Hedef makine etkin bu ben benim devre dışı bıraktığınızda olmasıdır

Garip olarak reddettiğinden

Bağlantı yapılmış olabilir - Bu çalıştığınızda

using (var udpClient = new UdpClient(5556)) 
{ 
    udpClient.Connect(IPAddress.Parse("192.168.1.2"), 5556); 
    // DO STUFF 
} 

aşağıdaki hatayı alıyorum Bu diğer ağ mükemmel çalışır ancak 2 bağlantı ile (LAN & WiFi) artık çalışmıyor ... Yanlış adaptör gönderiyor sanırım? Varsayılan ağ geçidim aynı mı, yoksa neyi yanlış yapıyorum? Ben ağ tabanlı uygulamalar geliştirme konusunda yeniyim ...

+0

Bu arada, UDP ile Connect'i aramanıza gerek yoktur - aradığınız her şey, göndermek istediğiniz bitiş noktasını geçmeniz gerekmez. – markmnl

+0

Ayrıca, geri döngü adresini kullanabilirsiniz: 127.0.0.1 ve bağlanmış arabirimler var. – markmnl

cevap

1

Böyle ağ kartı IP ile bir IPEndPoint belirtmek zorunda: IP kullanmak UdpClient söylemiyorlar

var endpoint = new IPEndPoint(IPAddress.Parse("192.168.1.2"), portNum); 
UdpClient client = new UdpClient(endpoint); 
1

.

UdpClient, bir IPEndPoint alabilen bir constructor sahiptir.

const string ip = "192.168.1.2"; 
const int port = 5556; 

var listenEndpoint = new IPEndPoint(IPAddress.Parse(ip), port); 
var udpClient = new UdpClient(listenEndpoint); 
+0

Bunu denedim ama işe yaramıyor, herhangi bir fikrin var mı? –

1

C# de o kadar iyi değilim ama sanırım sorunu anlıyorum. UdpClient'inizi 5556 numaralı bağlantı noktasına bağlıyorsunuz ancak IP adresini belirtmiyorsunuz. İşletim sistemi sizin için IP adresini seçecektir. Sanırım 192.168.1.2 veya 192.168.1.5 olabilir, hangisi olduğunu söyleyemezsiniz. Aynı udpClient ile, 192.168.1.2, 5556 numaralı bağlantı noktasını dinleyen bir uzak ana bilgisayara bağlanmaya çalışıyorsunuzdur. Ve muhtemelen hiç kimse orayı dinlemiyor. Bu yüzden hatayı aldınız.

(kötü C# için kusura) aşağıdakileri:

  • iki udpClient en Var, bir iplik veya program/süreçte:

    var udpClient1 = new UdpClient("192.168.1.2", 5556); 
    

Bu seferki olacak IP addres 192.168.1.2 bağlantı noktası dinlemek 5556.

  • İkinci iplik veya program/süreçte:

    var udpClient2 = new UdpClient(); //doesn't matter which (IP, port) the OS will bind it to. 
    udpClient2.Connect(IPAddress.Parse("192.168.1.2"), 5556); //connect to peer/server listening in (IP=192.168.1.2, port=5556) 
    

Ayrıca aynı iş parçacığı udpClient1 ve udpClient2 hem ele verebilir. Önemli olan şudur ve (IP, port) 'a bağlanırsanız orada dinleyen bazı uygulama/süreçler olmalıdır. Aksi takdirde, uzak ana bilgisayar datagramın teslim edilemeyeceğini belirten bir ICMP mesajı gönderir. Bağlantı reddedildi.

İlgili konular