问个关于UDP断口处理的问题
namespace Microsoft.Rfid.Reader.Driver.Acme
{
internal class UdpTransport
{
private UdpClient client;
private UdpClient asynClient;
private ILogger logger;
private AcmeReaderLayer readerLayer;
private ManualResetEvent asynEvent;
private const int clientPort = 4567;
private const int asynClientPort = 4568;
private static string localHost = Dns.GetHostName();
private Thread asynReceiveThread;
private string host;
private int port;
public UdpTransport()
{
}
public void Init(TcpTransportSettings settings,ILogger logger, AcmeReaderLayer readerLayer)
{
lock (this)
{
try
{
this.logger = logger;
this.readerLayer = readerLayer;
this.host = settings.Host;
this.port = settings.Port;
asynEvent = new ManualResetEvent(true);
IPAddress ip = Dns.GetHostAddresses(localHost)[0];
this.client = new UdpClient(new IPEndPoint(ip, clientPort));
this.asynClient = new UdpClient(new IPEndPoint(ip, asynClientPort));
}
catch (Exception ex)
{
logger.Error( "UdpTransport Contrusture Error: " + ex.ToString());
}
}
private const int clientPort = 4567;
private const int asynClientPort = 4568; 这两个断口,现在是固定的
现在想这的常数值,变位动态可变的
在下面的两句里被引用
this.client = new UdpClient(new IPEndPoint(ip, clientPort));
this.asynClient = new UdpClient(new IPEndPoint(ip, asynClientPort));
要问的问题是:
在MS的BIZTALK RFID 中,每加一设备,就要走到INIT()里
而每个设备要两个端口,如何实现端口不重复?
描述:
如有一个设备
A INTI 占 5000 和5001
而再加入个设备B 则要分配其他的两个端口号,且这两个端口要未被使用。
加C 。。。
端口不允许重复 如何搞啊?
[解决办法]
我对你的这方面的业务不太了解..
对于如何防止重复?
那就把用过的端口号存储起来,为一个新设备分配端口号的时候,与存储的已分配的端口号作一下比较,保证不重复就行了..
不知道是不是我的理解有误..