วันอังคารที่ 9 กันยายน พ.ศ. 2557

การเช็คว่า เข้ามาจาก Wifi หรือ 3G



  string UserHostName = Request.UserHostName;  
 string UserHostAddress1 = Request.UserHostAddress;
  string ServerName = Request.ServerVariables["SERVER_NAME"];

   
 string isWifi = "";
     
try {
      GetHostEntry = System.Net.Dns.GetHostEntry(Request.UserHostAddress).HostName;
      isWifi = "true";
      if(GetHostEntry.Contains("asianet.co.th"))
      {
          if (UserHostName.Substring(2, 1) == ".") {
                   isWifi = "false";
          }
          else {
                 isWifi = "true";
          }
      }
 } catch (Exception ex)
{
                        isWifi = "false";

อธิบาย เพราะว่า AIS กับ Dtac ไม่ได้ทำ DNS ไว้ ทำให้เวลา get  System.Net.Dns.GetHostEntry(Request.UserHostAddress).HostName จึงเกิด Error ทำให้เรารู้ว่าเป็น 3G

ส่วน TRUE ทำ DNS ไว้  เพราะฉะนั้น ต้อง check จาก ip ถ้า ขึ้นต้น แค่เลข 2 ตัว เป็น 3G ถ้า 3 ตัว เป็น Wifi จ๊ะ

ใคร งง ตรงไหน ฝากคำถามไว้นะจ๊ะ