在Windows服务中设置端口号

时间:2014-03-13 20:00:25

标签: c# windows-services

我要开发一个Windows服务。服务启动时,有一个端口。我的问题是,我们可以为其分配一个特定的端口号吗?例如,端口号是" 55431"。

3 个答案:

答案 0 :(得分:3)

是。假设您使用WCF作为通信层,您只需将绑定/协议配置为作为服务配置的一部分进行侦听。在您的服务的OnStart()方法中,您将注册该端口。当服务停止时,您将取消注册它。

Complete Walk-Through

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);