2011-02-15 19 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接口来连接互联网。