// Demonstrates a server that receives sound data from clients // and relays it to other clients using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace Server { class Program { static void Main(string[] args) { int iResult; Int64 RecvPacket = mn.CreatePacket(); // Start server Console.WriteLine("Starting server..."); mn.Start(1,0); mn.SetLocal(0,"",2525,"",2525); mn.SetBufferSizes(0,15000,1024,1); mn.StartServer(0,50,0,4); Console.WriteLine("Server started"); Console.WriteLine("Local TCP IP: " + mn.GetLocalIPTCP(0)); Console.WriteLine("Local TCP port: " + mn.GetLocalPortTCP(0)); Console.WriteLine("Local UDP IP: " + mn.GetLocalIPUDP(0)); Console.WriteLine("Local UDP port: " + mn.GetLocalPortUDP(0)); Console.WriteLine(); // Main loop bool bRunning = true; while(bRunning == true) { Thread.Sleep(1); // Accept new connections iResult = mn.ClientJoined(0); if(iResult > 0) { Console.WriteLine("New client joined: " + iResult); Console.WriteLine("Client TCP IP: " + mn.GetClientIPTCP(0,iResult)); Console.WriteLine("Client TCP port: " + mn.GetClientPortTCP(0,iResult)); Console.WriteLine("Client UDP IP: " + mn.GetClientIPUDP(0,iResult)); Console.WriteLine("Client UDP port: " + mn.GetClientPortUDP(0,iResult)); } // Leaving clients iResult = mn.ClientLeft(0); if(iResult > 0) { Console.WriteLine("Client left: " + iResult); } // New TCP packets for(int cl = 1;cl<=mn.GetMaxClients(0);cl++) { iResult = mn.RecvUDP(0,RecvPacket,cl,0); if(iResult > 0) { // Add client ID to start of packet mn.SetCursor(RecvPacket, 0); mn.Insert(RecvPacket,sizeof(int)); mn.AddInt(RecvPacket,cl); // Send packet to clients mn.SendUDPAll(0,RecvPacket,false,true,cl); } } } } } }