UDP网络通讯问题。。。

问题描述

建立一个Socket绑定到IPAddress.Any的50000端口(ss),本地有一网卡网卡有多个IP,例如有以下几个ip192.168.0.10192.168.0.20192.168.0.30三个IP,10为主IP,直接只用ss.SendTo发送UDP数据包出去使用的是主IP的身份,怎样灵活的在以上三个IP中切换发送时的IP身份?

解决方案

解决方案二:
参考:usingSystem;usingSystem.Management;namespaceArLi.CommonPrj{publicclassChangeIP{///<summary>///BuildofArLi2003.6.3///</summary>publicstaticreadonlySystem.VersionmyVersion=newSystem.Version(1,1);privateManagementBaseObjectiObj=null;privateManagementBaseObjectoObj=null;privateManagementClassmc=newManagementClass("Win32_NetworkAdapterConfiguration");privatereadonlyManagementObjectCollectionmoc;///<summary>///例:///<code>///ArLi.CommonPrj.ChangeIPo=newArLi.CommonPrj.ChangeIP();///string[]ipList=newstring[]{"192.168.0.253","192.168.0.250"};///string[]subnetList=newstring[]{"255.255.255.0","255.255.255.0"};///o.ChangeTo(ipList,subnetList);///</code>///</summary>publicChangeIP(){moc=mc.GetInstances();}///<summary>控制连接</summary>///<paramname="ipAddr">IP地址列表</param>///<paramname="subnetMask">对应子网掩码列表</param>publicvoidChangeTo(string[]ipAddr,string[]subnetMask){foreach(ManagementObjectmoinmoc){if(!(bool)mo["IPEnabled"])continue;iObj=mo.GetMethodParameters("EnableStatic");iObj["IPAddress"]=ipAddr;iObj["SubnetMask"]=subnetMask;oObj=mo.InvokeMethod("EnableStatic",iObj,null);}}///<summary>控制连接</summary>///<paramname="ipAddr">IP地址列表</param>///<paramname="subnetMask">对应子网掩码列表</param>///<paramname="gateways">网关列表</param>///<paramname="gatewayCostMetric">网关接口跃点数列表</param>publicvoidChangeTo(string[]ipAddr,string[]subnetMask,string[]gateways,string[]gatewayCostMetric){foreach(ManagementObjectmoinmoc){if(!(bool)mo["IPEnabled"])continue;iObj=mo.GetMethodParameters("EnableStatic");iObj["IPAddress"]=ipAddr;iObj["SubnetMask"]=subnetMask;oObj=mo.InvokeMethod("EnableStatic",iObj,null);iObj=mo.GetMethodParameters("SetGateways");iObj["DefaultIPGateway"]=gateways;iObj["GatewayCostMetric"]=gatewayCostMetric;oObj=mo.InvokeMethod("SetGateways",iObj,null);}}///<summary>控制连接</summary>///<paramname="ipAddr">IP地址列表</param>///<paramname="subnetMask">对应子网掩码列表</param>///<paramname="gateways">网关列表</param>///<paramname="gatewayCostMetric">网关接口跃点数列表</param>///<paramname="dnsServer">DNS服务器列表</param>publicvoidChangeTo(string[]ipAddr,string[]subnetMask,string[]gateways,string[]gatewayCostMetric,string[]dnsServer){foreach(ManagementObjectmoinmoc){if(!(bool)mo["IPEnabled"])continue;iObj=mo.GetMethodParameters("EnableStatic");iObj["IPAddress"]=ipAddr;iObj["SubnetMask"]=subnetMask;oObj=mo.InvokeMethod("EnableStatic",iObj,null);iObj=mo.GetMethodParameters("SetGateways");iObj["DefaultIPGateway"]=gateways;iObj["GatewayCostMetric"]=gatewayCostMetric;oObj=mo.InvokeMethod("SetGateways",iObj,null);iObj=mo.GetMethodParameters("SetDNSServerSearchOrder");iObj["DNSServerSearchOrder"]=dnsServer;oObj=mo.InvokeMethod("SetDNSServerSearchOrder",iObj,null);}}///<summary>控制连接,使它使用DHCP</summary>publicvoidEnableDHCP(){foreach(ManagementObjectmoinmoc){if(!(bool)mo["IPEnabled"])continue;if(!(bool)mo["DHCPEnabled"]){iObj=mo.GetMethodParameters("EnableDHCP");oObj=mo.InvokeMethod("EnableDHCP",iObj,null);}}}}}
解决方案三:
楼上的CathySun118理解错了意思
解决方案四:
顶楼主你一下。另外招版主,或合作管理员,有兴趣的加群4228406
解决方案五:
你要指定地址的话,绑定的时候就不要使用IPAddress.Any,而是应该与具体的地址绑定。
解决方案六:
该回复于2008-11-26 10:35:32被版主删除
解决方案七:
绑定的时候就不要使用IPAddress.Any,而是应该与具体的地址绑定如果这样做的话,我要帮定好多IP地址
解决方案八:
需要使用哪个地址发送数据,就绑定到哪个,怎么会要绑定好多呢?
解决方案九:
我要是有20个公网IP地址,那不是要帮定20个socket
解决方案十:
我现在就是用绑定固定IP的方式,但Socket太多,我想只绑定一个0.0.0.0的这个IP地址。
解决方案十一:
不管你有多少个IP,需要用哪个发数据,就绑定哪个,绑定以后的Socket就以该IP发送数据。当然,你喜欢把这些个IP都一次性地绑定到对应的Socket上,只要你不嫌麻烦,我也没意见。

时间: 2024-08-03 20:56:03

UDP网络通讯问题。。。的相关文章

用udp协议通讯示例

一.绪言 udp是一种面向非连接,不可靠的通讯协议,相对于tcp来说,虽然可靠性不及,但传输效率较高.所以在网络上仍有很大的用途.这几日需要了解下udp通讯的过程,上网发现这方面的资料还挺少.于是仔细的翻找了下msdn,基本上搞清楚了udp通讯的过程.做了一个测试的例子.希望对大家有帮助. 二.udp的通讯过程 server端: open a socket(socket)--->name the socket(bind)--->send and receive data(sendto recv

xamarin for android 网络通讯 是调用 system.Net.Sockets 吗?

问题描述 xamarinforandroid网络通讯是调用system.Net.Sockets吗?xamarinforandroid网络通讯简单例子提供一下,要做一个电力通讯的手机小软件,刚接触这一块,有高手,请指点一下. 解决方案 解决方案二:自己顶一下,xamarin国内资料有点少,我这边有些资料,XamariniOS开发实战(上册)试读C#开发Android应用实战--使用MonoforAndroid和.NETC#源程序iPhone高级编程--使用MonoTouch和.NETC#.PDF有

udp socket-.Net UDP Socket 通讯时 如何实现客户端连续发信息或服务端连续发信息

问题描述 .Net UDP Socket 通讯时 如何实现客户端连续发信息或服务端连续发信息 本人是新手,写了 C# 的UDP SOcket 通讯程序,目前只实现了 客户端向服务端发送消息,服务端收到消息后回复消息,而 不能实现客户端连续向服务端发消息,服务端连续回复消息. 在查找资料说要使用多线程,但是我不懂,请求高手指导.代码如下: Client: private void btSendMsg_Click(object sender, EventArgs e) { byte[] data =

用C#实现基于TCP协议的网络通讯

网络 TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程.然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实现不是一天两天的功夫,所幸的是在.net framework环境下,我们不必要去追究TCP协议底层的实现,一样可以很方便的编写出基于TCP协议进行网络通讯的程序. 要进行基于TCP协议的网络通讯,首先必须建立同远程主机的连接,连接地址通常包括两部分--主机名和端口,如www.yesky.c

用C#实现基于用C#实现基于TCP协议的网络通讯

网络 TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程.然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实现不是一天两天的功夫,所幸的是在.net framework环境下,我们不必要去追究TCP协议底层的实现,一样可以很方便的编写出基于TCP协议进行网络通讯的程序. 要进行基于TCP协议的网络通讯,首先必须建立同远程主机的连接,连接地址通常包括两部分--主机名和端口,如www.yesky.c

ACE中网络通讯编程基本架构

ACE_INET_Addr类,包装了网络地址 ACE_SOCK_Connector类,扮演主动连接角色,发起通讯连接.连接到远端的服务. ACE_SOCK_Acceptor类,扮演被动连接角色,等待连接.等待远端客户的请求. ACE_SOCK_Stream类,扮演数据通讯角色,发送和接收数据.完成客户与服务之间的通讯. 利用ACE库来开发网络通讯程序是很简单的,一个基本程序只用到以上提到的几个类,就可以完成一个基于客户端.服务器端模型的网络应用的开发.开发者无需了解Socket在不同平台上的实现

网络服务器-嵌入式设备网络通讯稳定性开发

问题描述 嵌入式设备网络通讯稳定性开发 环境与现象: STM32F207系列MCU,搭配LAN8710网卡芯片做网络服务器.协议栈使用LWIP,服务器提供一个TCP/IP的SOCKET接口供客户端调用.访问方式为,单线程.短连接.高吞吐.除正常访问外,客户端每10分钟向服务器发送一条报文,以检测服务器的健康状态.目前的情况是:在客户端与服务器共同运行15天左右的时候就会出现服务器无法访问的情况,具体表现为TCP/IP无法访问,PING指令无法联通,此时若关机重启则服务器故障消失,可以正常访问,但

android网络通讯Xutils问题

问题描述 android网络通讯Xutils问题 String url = getResources().getString(R.string.url); RequestParams params = new RequestParams(); params.addBodyParameter("cmd", "301"); HttpUtils httpUtils = new HttpUtils(); httpUtils.send(HttpMethod.POST, url

iptraf:一个实用的TCP/UDP网络监控工具

iptraf:一个实用的TCP/UDP网络监控工具 iptraf是一个基于ncurses的IP局域网监控器,用来生成包括TCP信息.UDP计数.ICMP和OSPF信息.以太网负载信息.节点状态信息.IP校验和错误等等统计数据. 它基于ncurses的用户界面可以使用户免于记忆繁琐的命令行开关. 特征 IP流量监控器,用来显示你的网络中的IP流量变化信息.包括TCP标识信息.包以及字节计数,ICMP细节,OSPF包类型. 简单的和详细的接口统计数据,包括IP.TCP.UDP.ICMP.非IP以及其