Merhaba arkadaşlar,

Amatorce yapmaya calıştığım bir uygulama icin yardıma ihtiyacım var. Yapmak istediğim şey evdeki yerel ağa bağlı TV ile haberleşmek. Multicast IP denilen 239 ile başlayan bir adrese 1900 nolu porttan gonderilen isteğe aldığım cevap ile cihazın ağdaki IP'sini oğrenip daha sonra bu ip ile bağlantı kurarak cihazı kontrol etmek istiyorum. Normalde cihazı kontrol etme kısmı tamam ama maalesef cihazın IP sini oğrenmek icin kullandığım kodlar sorun cıkarıyor. Kodları aşağıda veriyorum. Kodlar TV ye isteği yolluyor ve TV de istek yapan PC ye cevap veriyor ama belli bir yerde program donuyor ve ilerlemiyor. Giden sorguyu ve gelen cevabı Wire Shark Ağ izlem programı ile goruyorum. 239 ile başlayan IP hatalı değil. Bu adres ağa bağlı cihazlara sorgu icin kullanılan UDP protokolu kullanan bir adresmiş. Hakkında bilgi almak istediğiniz cihaz icin sorgu isteğini bu adrese gonderince ağdaki tum cihazlar cevap veriyor ve gelen cevapları analiz edip iclerinden istediğiniz cihazı seciyorsunuz.

Sonucta porgram işini yapıyor ama sonlanmıyor. recv = sock_recv.ReceiveFrom(data, ep) adresinde kalıyor ve ilerlemiyor.

Kod:
Imports System.Net Imports System.Net.Sockets Imports System.Text Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim sock_send As New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp) Dim multicast_ip As IPAddress = IPAddress.Parse("239.255.255.250") Dim multicast_port As Integer = 1900 sock_send.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 2) Dim IpEndPoint As New IPEndPoint(multicast_ip, multicast_port) sock_send.Connect(IpEndPoint) Dim query_str = "M-SEARCH * HTTP/1.1\r\nHOST: 239.255.255.250:1900\r\nMAN: ""ssdp:discover""\r\nMX: 2\r\nST: urn:schemas-upnp-org:device:MediaRenderer:1\r\n\r\n".Replace("\r\n" , vbCrLf) Dim ascii As Encoding = Encoding.ASCII Dim query_str_byte = ascii.GetBytes(query_str) sock_send.Send(query_str_byte, query_str_byte.Length, SocketFlags.None) Dim sock_recv As New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp) Dim i_EndPoint As New IPEndPoint(IPAddress.Any, multicast_port) sock_recv.Bind(i_EndPoint) sock_recv.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, New MulticastOption(IPAddress.Parse("239.255.255.250") )) Dim ep As EndPoint = CType(i_EndPoint, EndPoint) Dim data(1024) As Byte Dim recv As Int16 recv = sock_recv.ReceiveFrom(data, ep) '