2013-03-29 2 views
1

Я пытаюсь сделать приложение для своего ноутбука, который в случае, если я забыл выйти, я могу использовать свой smarthphone для выхода из системы, используя для этого конкретное приложение. Поэтому я обычно думал, если у вас есть маршрутизатор ... у вас есть проблема, потому что у вас нет внешнего ip, который вы можете использовать, и для порта. Для этого я использовал эту функцию для получения внешнего ip.Проблемы с подключением к Интернету C#

 public string adresaIP() 
    { 
     UTF8Encoding utf8 = new UTF8Encoding(); 
     WebClient clientWeb = new WebClient(); 
     String adresaIP = utf8.GetString(clientWeb.DownloadData("http://bot.whatismyipaddress.com")); 
     return adresaIP; 
    } 

Но когда я пытаюсь использовать тэ IPEndPoint это dosen't работы он дает это я об ошибке исключения, и я не знаю, были, я сделал неправильно.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Net; 
using System.Net.Sockets; 
using System.IO; 


namespace bluetooth_LogOff 
{ 
public partial class Form1 : Form 
{ 
    static byte[] buffer { get; set; } 
    static Socket soket; 


    public Form1() 
    { 
     InitializeComponent(); 
     try 
     { 
      string ip = adresaIP(); 

      soket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
      //soket.Bind(new IPEndPoint(IPAddress.Parse(ip),1234)); <<-- in this way dosen't work 

      soket.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"),1234)); // <<- in this way it works.... 
      soket.Listen(100); 


      Socket accept = soket.Accept(); 
      buffer = new byte[accept.SendBufferSize]; 
      int bytesRead = accept.Receive(buffer); 
      byte[] format = new byte[bytesRead]; 
      for (int i = 0; i < bytesRead; i++) 
      { 
       format[i] = buffer[i]; 
      } 
      string primescMesaj = Encoding.ASCII.GetString(format); 
      MessageBox.Show(primescMesaj); 
      soket.Close(); 
      accept.Close(); 



     } 
     catch (Exception messaj) 
     { 
      MessageBox.Show(messaj.ToString()); 

     } 


    } 

    private void button1_Click(object sender, EventArgs e) 
    { 

     label1.Text = adresaIP(); 





    } 
    public string adresaIP() 
    { 
     UTF8Encoding utf8 = new UTF8Encoding(); 
     WebClient clientWeb = new WebClient(); 
     String adresaIP = `utf8.GetString(clientWeb.DownloadData("http://bot.whatismyipaddress.com"));` 
     return adresaIP; 
    } 
} 

} 

Но самое смешное, если я поставил как Адресные «127.0.0.1» Это работает, но если я ставлю струнное это dosen't Адресную

+0

Какое исключение? –

+0

Определить «не работает». Исключения имеют долгую историю предоставления полезной информации. – David

+0

Приветствую вас за быстрый ответ здесь pic [ссылка] http://imageshack.us/photo/my-images/534/asdsadasddasdsadsa.png/ [/ link] –

ответ

3

Вы не можете связываться с внешним адресом этого адрес принадлежит маршрутизатору.

Вы должны привязать к адресу 0.0.0.0 (все адреса) на своем ноутбуке и настроить маршрутизатор для пересылки порта ноутбука (или использования UPnP).

Причина, по которой вы не можете получить доступ к своему ноутбуку напрямую, заключается в том, что ваш маршрутизатор, как и большинство маршрутизаторов, является маршрутизатором NAT (преобразование сетевых адресов). Это позволяет нескольким компьютерам скрываться за одним IP-адресом. Таким образом, маршрутизатор будет иметь общедоступный IP-адрес, а ваш ноутбук и другие устройства за маршрутизатором будут иметь частный IP-адрес (например, в диапазоне 192.168.x.x)

Большинство маршрутизаторов NAT можно настроить с помощью статической переадресации портов; то есть порт в определенном частном адресе отображается в том же или другом порту в общедоступном IP-адресе. Это позволяет получить доступ к внутренним устройствам из общедоступного Интернета. UPnP - это протокол, который делает то же самое, но не требует ручной настройки на маршрутизаторе. UPnP обычно заключается в том, как приложения P2P и некоторые многопользовательские игры становятся доступными для общественности портами без вмешательства человека. Именно поэтому UPnP можно считать угрозой безопасности, поскольку владелец компьютера может не знать о такой пересылке.

+0

Я никогда не думал об этом, я постараюсь, как только я вернусь домой. Вы прямо здесь, у меня есть маршрутизатор, и, возможно, это возможно. –

+0

Я уверен, что я отредактирую свой ответ для получения дополнительной информации. –

+0

Большое спасибо за помощь, но потом я задаюсь вопросом, как мне удастся выйти из моего компьютера за маршрутизатором без вмешательства порта или другой вещи? –