本来问题是这样的:
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastInterface, ???);==========================后来有位高手告诉我:
int optionValue = (int)IPAddress.HostToNetworkOrder(第几块网卡);
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastInterface, optionValue );========================
我有两个网卡,一个是192.168.1.27
另一个是192.168.2.27
========================
试一试这位朋友的方法:
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastInterface, 0);果然可以,其中绑定的IP是192.168.1.27。我想如果要绑定第二个IP(2.27)
只要用SetSocketOption(×,×,1)就行了。结果跟本不是这么回事,用1做参数总是绑定失败。
为什么啊???
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastInterface, ???);==========================后来有位高手告诉我:
int optionValue = (int)IPAddress.HostToNetworkOrder(第几块网卡);
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastInterface, optionValue );========================
我有两个网卡,一个是192.168.1.27
另一个是192.168.2.27
========================
试一试这位朋友的方法:
s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastInterface, 0);果然可以,其中绑定的IP是192.168.1.27。我想如果要绑定第二个IP(2.27)
只要用SetSocketOption(×,×,1)就行了。结果跟本不是这么回事,用1做参数总是绑定失败。
为什么啊???
解决方案 »
- 在winfrom程序里面 DataGridViewButtonColumn列 按键的背景色怎样修改
- C# winform Dataset 值传递问题
- 大家来看看这十道面试题啊
- 征集:远程SOCKET数据传输解决方案,有见解的都进来说说!
- 让Scoket的客户端和服务端长期保持连接(包括空闲的时候),有什么不好的地方吗?好像没人这样做的。
- 在WINFORM里有有一个dataGrid1,本来它的DataSource=dt,FORM上有一个按钮"查询",按下后dataGrid1.DataSource=ddd,也就是绑定到另外一张表
- 关于遍历控件的一个问题
- 菜鸟的Font问题!关于"|"号.
- treeView鼠标经过节点或选中节点的时候都有一个背景颜色,怎么去掉啊??
- 如何复制控件
- OnPaint()方法和Paint事件
- 这样写有什么好处
注意这一行,转换了整数的字节序,如果是0,转不转都是一样的,但如果是1,就不一样了
这块网卡的IP在ipHost中所处的序数吧? Yes or No? thx
The following sample code shows you how to use SetSocketOption with the MulticastInterface socket option name. Type or paste the following code in the Main function of a new Microsoft Visual C# .NET console application:
int defaultPort = 5050;
string localName = Dns.GetHostName();IPHostEntry hostEntry = new IPHostEntry();
hostEntry = Dns.GetHostByName(localName);
IPAddress localAddress = hostEntry.AddressList[0];Socket mcastSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);// Bind the socket to default IP address and port.
mcastSocket.Bind(new IPEndPoint(localAddress,defaultPort));Console.Write("\nSelect Adapter for outgoing Multicast packets (Adapter Index) : ");
int index = int.Parse(Console.ReadLine());
int optionValue = (int)IPAddress.HostToNetworkOrder(index);Console.Write("\nMulticast Address - To add membership : ");
IPAddress mcastAddress = IPAddress.Parse(Console.ReadLine());
Console.Write("\nPort number - Where Multicast members are listening : ");
int mcastPort = int.Parse(Console.ReadLine());
MulticastOption mcastOpt = new MulticastOption(mcastAddress,localAddress);
// Add membership to the group.
mcastSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, mcastOpt);
// Set the required interface for outgoing multicast packets.
mcastSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastInterface, optionValue);// Send multicast packets.
string data = "This is a multicast packet";
mcastSocket.SendTo(ASCIIEncoding.ASCII.GetBytes(data), new IPEndPoint(mcastAddress,mcastPort));
请问你是如何在Msdn里找到这些资料的,这样我以后也知道去找如何在msdn里更多的资料,谢谢:)
谢谢