I have seen a few issues regarding the TFTP server (Free and Toolset editions). The steps to fix vary based on the error / stack trace.
The service logs the stack in the application event log (start->run->eventvwr.msc).
If the stack resembles this:
Service cannot be started. System.NullReferenceException: Object reference not set to an instance of an object.
at TFTPServer.Service.ConnectionPool.Dispose()
at TFTPServer.Service.TFTPServer.Stop()
at TFTPServer.Service.TFTPService.OnStop()
at System.ServiceProcess.ServiceBase.DeferredStop()
at System.ServiceProcess.ServiceBase.Stop()
at TFTPServer.Service.TFTPService.OnStart(String[] args)
at System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)
Then see the post here to fix…
If the exception is a SocketException, and the stack looks like this:
Service cannot be started. System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted
at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Bind(EndPoint localEP)
at System.Net.Sockets.TcpListener.Start(Int32 backlog)
at System.Net.Sockets.TcpListener.Start()
at System.Runtime.Remoting.Channels.ExclusiveTcpListener.Start(Boolean exclusiveAddressUse)
at System.Runtime.Remoting.Channels.Tcp.TcpServerChannel.StartListening(Object data)
at System.Runtime.Remoting.Channels.Tcp.TcpServerChannel.SetupChannel()
at System.Runtime.Remoting.Channels.Tcp.TcpServerChannel..ctor(Int32 port)
at TFTPServer.Service.TFTPServer..ctor()
at TFTPServer.Service.TFTPServer.get_Current()
at TFTPServer.Service.TFTPService.OnStop()
at System.ServiceProcess.ServiceBase.DeferredStop()
at System.ServiceProcess.ServiceBase.Stop()
at TFTPServer.Service.TFTPService.OnStart(Str...
Then see the post for the fix:
If you are getting the message "Another TFTP server is already running on port 69":
Steps to debug:
• Run "netstat -a -p udp -b -n" from a command line
• Look for any open socket on port 69.
? Sockets will be in the endpoint format <IPAddress>:<port>.
• If you find one, look at the process name in brackets directly below the open socket information, and stop that service or process.
HTH,
Greg