读书人

问个关于UDP断口处理的有关问题

发布时间: 2012-01-03 22:16:06 作者: rapoo

问个关于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 。。。
端口不允许重复 如何搞啊?



[解决办法]
我对你的这方面的业务不太了解..

对于如何防止重复?

那就把用过的端口号存储起来,为一个新设备分配端口号的时候,与存储的已分配的端口号作一下比较,保证不重复就行了..

不知道是不是我的理解有误..

读书人网 >C#

热点推荐