我要开发一个Windows服务。服务启动时,有一个端口。我的问题是,我们可以为其分配一个特定的端口号吗?例如,端口号是" 55431"。
答案 0 :(得分:3)
是。假设您使用WCF作为通信层,您只需将绑定/协议配置为作为服务配置的一部分进行侦听。在您的服务的OnStart()
方法中,您将注册该端口。当服务停止时,您将取消注册它。
protected override void OnStart(string[] args)
{
// Configure a binding on a TCP port
NetTcpBinding binding = new NetTcpBinding();
ServiceHost host = new ServiceHost(typeof(MyService));
string address = "net.tcp://localhost:55431/myservice"
host.AddServiceEndpoint(typeof(IMyService), binding, address);
host.Open();
}
答案 1 :(得分:0)
您可以打开套接字以侦听特定端口,也可以将WCF配置为使用给定端口。只有进程外网络通信才需要端口。
答案 2 :(得分:0)
您打算在服务中使用套接字吗?
如果是的话
IPAddress[] localIpAddresses = Dns.GetHostAddresses(Dns.GetHostName()).Where(_ => _.AddressFamily == AddressFamily.InterNetwork).ToArray();
//Listener
Socket ListenerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
ListenerSocket.Bind(new IPEndPoint(localIpAddresses[0], Port)); //Port goes here
ListenerSocket.Listen(100);