You've already forked lidgren-network-gen3
mirror of
https://github.com/lidgren/lidgren-network-gen3.git
synced 2026-05-15 22:56:30 +09:00
File stream sample added
This commit is contained in:
88
Samples/File stream sample/FileStreamServer/Program.cs
Normal file
88
Samples/File stream sample/FileStreamServer/Program.cs
Normal file
@@ -0,0 +1,88 @@
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using Lidgren.Network;
|
||||
using SamplesCommon;
|
||||
|
||||
namespace FileStreamServer
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
private static Form1 s_form;
|
||||
private static NetServer s_server;
|
||||
private static string s_fileName;
|
||||
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
s_form = new Form1();
|
||||
|
||||
NetPeerConfiguration config = new NetPeerConfiguration("filestream");
|
||||
config.Port = 14242;
|
||||
s_server = new NetServer(config);
|
||||
|
||||
Application.Idle += new EventHandler(AppLoop);
|
||||
Application.Run(s_form);
|
||||
|
||||
s_server.Shutdown("Application exiting");
|
||||
}
|
||||
|
||||
public static void Output(string str)
|
||||
{
|
||||
if (s_form != null && s_form.richTextBox1 != null)
|
||||
NativeMethods.AppendText(s_form.richTextBox1, str);
|
||||
}
|
||||
|
||||
static void AppLoop(object sender, EventArgs e)
|
||||
{
|
||||
while (NativeMethods.AppStillIdle)
|
||||
{
|
||||
NetIncomingMessage inc;
|
||||
while((inc = s_server.ReadMessage()) != null)
|
||||
{
|
||||
switch (inc.MessageType)
|
||||
{
|
||||
case NetIncomingMessageType.DebugMessage:
|
||||
case NetIncomingMessageType.WarningMessage:
|
||||
case NetIncomingMessageType.ErrorMessage:
|
||||
case NetIncomingMessageType.VerboseDebugMessage:
|
||||
Output(inc.ReadString());
|
||||
break;
|
||||
case NetIncomingMessageType.StatusChanged:
|
||||
NetConnectionStatus status = (NetConnectionStatus)inc.ReadByte();
|
||||
switch (status)
|
||||
{
|
||||
case NetConnectionStatus.Connected:
|
||||
// start streaming to this client
|
||||
inc.SenderConnection.Tag = new StreamingClient(inc.SenderConnection, s_fileName);
|
||||
Output("Starting streaming to " + inc.SenderConnection);
|
||||
break;
|
||||
default:
|
||||
Output(inc.SenderConnection + ": " + status + " (" + inc.ReadString() + ")");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// stream to all connections
|
||||
foreach (NetConnection conn in s_server.Connections)
|
||||
{
|
||||
StreamingClient client = conn.Tag as StreamingClient;
|
||||
if (client != null)
|
||||
client.Heartbeat();
|
||||
}
|
||||
|
||||
System.Threading.Thread.Sleep(0);
|
||||
}
|
||||
}
|
||||
|
||||
internal static void Start(string filename)
|
||||
{
|
||||
s_fileName = filename;
|
||||
s_server.Start();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user