Changelog
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Section titled “[Unreleased]”Changed
Section titled “Changed”- The license is now Apache-2.0, previously MIT.
[1.0.3] - 2026-08-15
Section titled “[1.0.3] - 2026-08-15”Server.GetClients()contains the client while itsClientConnectedevent runs. It used to be added after the event, so a handler counting clients was one short.- A client that disconnects while a controller method is still running no longer crashes the server process.
- A failed listener no longer reports
Listeningastrue: a bind error thrown from the setter, and an accept error raisesClientConnectingErrorand resets the property. - An enum value sent as a message arrives as that enum. It used to break the connection.
SendToAllAsyncdelivers the message to the remaining clients when one of them disconnects mid-send. It used to stop at the first disconnected client.- A
DateTimekeeps itsKindin transit. A UTC value used to arrive converted to local time. - Sending while the connection is being disposed throws
NetworkConnectionBreakExceptioninstead ofNullReferenceException. - Connections open on Linux. It used to fail with
SocketException: invalid argument.
1.0.2 - 2024-07-31
Section titled “1.0.2 - 2024-07-31”- A controller method returning
Task<T>gavenullinstead of the result.
1.0.1 - 2024-07-30
Section titled “1.0.1 - 2024-07-30”Server.ListenAsync()accepts clients on the calling task, as an alternative to the background thread started byListening.
- A controller method returning
Task<T>gave a wrong result.
1.0.0 - 2023-07-04
Section titled “1.0.0 - 2023-07-04”First release. TCP client and server exchanging serializable objects, remote method invocation through controller interfaces, authentication with ClientCredentials, SSL support and a replaceable serializer.