2011-02-15 41 views
2

我想模擬一些ad hoc網絡,我使用我的無線網卡連接到ad hoc網絡,我希望能夠發送一些特定的消息,當我得到一些觸發器來自這個ad hoc網絡。我的筆記本電腦通過Lan接口連接到互聯網,並通過無線網卡連接到ad hoc網絡。通過我的局域網接口發送電子郵件通過C#

這個ID我的代碼:

private void send_mail() 
     { 
      System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); 
      message.To.Add("[email protected]"); 
      message.Subject = "test"; 
      message.From = new System.Net.Mail.MailAddress("[email protected]"); 
      message.Body = "This is the message body"; 
      System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("a.b.c.d"); 
      smtp.Send(message); 
     } 

我想知道如何設置界面發送郵件。 默認情況下代碼要使用我的無線網卡發送郵件,無法連接到SMTP服務器,我得到錯誤。
我希望我的send_mail()函數通過LAN接口而不是無線接口連接。

+0

如果「a.b.c.d」位於LAN的網絡中,而不是adhoc網絡,則這應該會自動工作。個人電腦會知道將流量發送到適當的界面。你有沒有試過它,它不工作?你得到什麼錯誤? – irritate 2011-02-15 14:42:55

+0

@rerun我希望能夠選擇連接到smtp服務器的特定接口,在此代碼中,我希望我的send_mail()函數通過LAN接口連接。 – Am1rr3zA 2011-02-15 14:45:26

回答

0

想到的一個選擇是阻止端口上的端口25,但您不想發送該端口... Ad-Hoc網絡是否連接到Internet連接?如果不是,電子郵件應該去反正雖然你的有線網絡連接....

0

那是SmtpClient這是相當多的,如果你嘗試使用命令PROMT到RESOLV的ADRESS的範圍之外,做一個pinglookup它將使用可以到達該地址的接口。

此外,請確保您使用的繼電器使用的是端口25.您可以先嚐試telnet,如果有效,您應該可以使用SmtpClient連接到它。

+0

我認爲你沒有得到我的問題,或者我沒有得到你的答案。 – Am1rr3zA 2011-02-15 14:47:44

+0

@ Am1rr3zA,如果我理解你是正確的,你想選擇使用什麼網絡接口與你的`SmtpClient`,但這是不可能的,操作系統將檢測什麼接口可用的網絡地址。如果您在連接到Smtp服務器時遇到問題,您應首先驗證它是否使用`telnet`工作。 – 2011-02-15 14:49:35

0

無法選擇網卡使用。 在.NET中,您無法選擇使用哪個網卡打開網絡通信的套接字。

1

這是一個IP路由問題。您需要在計算機上設置路由以通過WiFi接口直接訪問a.b.c.d。

使用管理員權限打開命令提示符並使用route add命令。

0

我認爲這是網絡在您的PC上設置的問題,因此可能值得在superuser.com上詢問這個問題。

但是,如果沒有其他方法可行,則可以在發送電子郵件之前暫時禁用您的無線連接,然後再次啓用它。假設你使用的是DHCP,你可以通過WMI來做到這一點,本頁頂部的示例顯示了你如何can disable a network connection using WMI?。如果你不使用DHCP,還是有辦法做到這一點,但這有點困難。

如果你還沒有在C#中使用過WMI,這篇文章可能是一個很好的起點:WMI Made Easy For C#

或採取塞爾的回答爲出發點,您可以通過CreateIpForwardEntryRoute add編程,後來通過刪除DeleteIpForwardEntry

1

將您的LAN接口設置爲您的默認網關,或將您的LAN接口設置爲您的默認連接/ Internet連接。

操作系統必須知道首先使用LAN接口來連接互聯網。