TcpServer Class |
Namespace: Demo3D.Net.Protocols
public static class TcpServer
| Name | Description | |
|---|---|---|
| Open(Int32, NotifyDataChangedEventHandler) |
Opens a TCP server.
Creates a server and starts accepting connections, calling 'dataChangedHandler' with data from each connection as it arrives.
This method returns after the server has been established, leaving the accepting and servicing of connections to a background thread.
| |
| Open(Int32, ServiceClientAsyncIByteStreamService) |
Opens a TCP server.
Creates a server and starts accepting connections, calling 'serviceConnection' with each connection established.
This method returns after the server has been established, leaving the accepting and servicing of connections to a background thread.
| |
| Open(Int32, ServiceClientAsyncIPacketIOService) |
Opens a TCP server.
Creates a server and starts accepting connections, calling 'serviceConnection' with each connection established.
This method returns after the server has been established, leaving the accepting and servicing of connections to a background thread.
| |
| OpenAsync(Int32, NotifyDataChangedEventHandler) |
Opens a TCP server.
Creates a server and starts accepting connections, calling 'dataChangedHandler' with data from each connection as it arrives.
This method returns after the server has been established, leaving the accepting and servicing of connections to a background thread.
| |
| OpenAsync(Int32, ServiceClientAsyncIByteStreamService) |
Opens a TCP server.
Creates a server and starts accepting connections, calling 'serviceConnection' with each connection established.
This method returns after the server has been established, leaving the accepting and servicing of connections to a background thread.
| |
| OpenAsync(Int32, ServiceClientAsyncIPacketIOService) |
Opens a TCP server.
Creates a server and starts accepting connections, calling 'serviceConnection' with each connection established.
This method returns after the server has been established, leaving the accepting and servicing of connections to a background thread.
| |
| OpenAsync(Boolean, Int32, NotifyDataChangedEventHandler) |
Opens a TCP server.
Creates a server and starts accepting connections, calling 'dataChangedHandler' with data from each connection as it arrives.
This method returns after the server has been established, leaving the accepting and servicing of connections to a background thread.
| |
| OpenAsync(Boolean, Int32, ServiceClientAsyncIByteStreamService) |
Opens a TCP server.
Creates a server and starts accepting connections, calling 'serviceConnection' with each connection established.
This method returns after the server has been established, leaving the accepting and servicing of connections to a background thread.
| |
| OpenAsync(Boolean, Int32, ServiceClientAsyncIPacketIOService) |
Opens a TCP server.
Creates a server and starts accepting connections, calling 'serviceConnection' with each connection established.
This method returns after the server has been established, leaving the accepting and servicing of connections to a background thread.
|
This example shows a simple TCP server that accepts connections, calling a function for each connection accepted. The function reads data directly from the underlying Stream.
See TcpClient for the implementation of the client that works with this server.
using System; using System.Threading.Tasks; using Demo3D.Native; using Demo3D.Net; using Demo3D.Net.Protocols; using Demo3D.Visuals; namespace Examples.Net.TcpStreamServerExample { [Auto] public class Server { [Auto] IBuilder app; [Auto] Document doc; [Auto] PrintDelegate print; [Auto] SimplePropertyValue<int> tcpPort; // The port to run the server on. [Auto] void OnInitialize(Visual sender) { // Open a server on the configured tcpPort. // This variant of TcpServer.Open will open the server, and call ServiceConnectionAsync // for each connection accepted. TcpServer.Open(tcpPort, ServiceConnectionAsync); } async Task ServiceConnectionAsync(ServerClient<IByteStreamService> socket) { Console.WriteLine("Connection from " + socket.Address); var stream = socket.IO.Stream; // Simple server loops forever receiving messages and printing them to the log. for (;;) { var buffer = new byte[4]; var numRead = await stream.ReadAsync(buffer, 0, 4); Console.WriteLine("Message received: " + numRead); if (numRead == 0) break; } } } }
This example shows a simple TCP server that accepts connections, waits for data to be received and then calls a method to handle the messages read from the each of the clients.
See TcpClient for the implementation of the client that works with this server. See also BinaryTextEncoding for help with string-based protocols.
using System; using Demo3D.Native; using Demo3D.Net; using Demo3D.Net.Protocols; using Demo3D.Visuals; using Buffer = Demo3D.IO.Buffer; namespace Examples.Net.TcpServerExample { [Auto] public class Server { [Auto] IBuilder app; [Auto] Document doc; [Auto] PrintDelegate print; [Auto] SimplePropertyValue<int> tcpPort; // The port to run the server on. [Auto] void OnInitialize(Visual sender) { // Open a server on the configured tcpPort. // This variant of TcpServer.Open will open the server, accept incoming connections and // wait for data to arrive on each of the connections. It will then call ReceiveMessage // when data is received on any of the clients. TcpServer.Open(tcpPort, ReceiveMessage); } void ReceiveMessage(ProtocolSocket socket, object service, NotifyDataChangedEventArgs e) { try { var args = (PacketChangedEventArgs)e; // A TCP server uses PacketChangedEventArgs. var message = args.GetData(); // Read from the packet. // Handle the message. HandleMessage(message); } catch (Exception x) { socket.Close(x); } } void HandleMessage(Buffer message) { print("Message received: " + message.Length + " bytes"); } } }