main
syneffort 2 years ago
parent a5a712a3e4
commit 5c95777400
  1. 89
      SocketStudy/ClientForm/MainForm.Designer.cs
  2. 6
      SocketStudy/ClientForm/MainForm.cs
  3. 3
      SocketStudy/ClientForm/MainForm.resx
  4. 2
      SocketStudy/PComm/PClient.cs
  5. 153
      SocketStudy/ServerForm/MainForm.cs
  6. 123
      SocketStudy/ServerForm/MainForm.resx
  7. 58
      SocketStudy/ServerForm/mainForm.Designer.cs

@ -34,23 +34,32 @@ namespace ClientForm
this.objectButton = new System.Windows.Forms.Button(); this.objectButton = new System.Windows.Forms.Button();
this.imageButton = new System.Windows.Forms.Button(); this.imageButton = new System.Windows.Forms.Button();
this.fileButton = new System.Windows.Forms.Button(); this.fileButton = new System.Windows.Forms.Button();
this.mainTablePanel = new System.Windows.Forms.TableLayoutPanel();
this.panel1 = new System.Windows.Forms.Panel();
this.statusStrip = new System.Windows.Forms.StatusStrip();
this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
this.heartBeatStatus = new System.Windows.Forms.ToolStripStatusLabel();
this.mainTablePanel.SuspendLayout();
this.panel1.SuspendLayout();
this.statusStrip.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// logConsole // logConsole
// //
this.logConsole.BackColor = System.Drawing.Color.Black; this.logConsole.BackColor = System.Drawing.Color.Black;
this.logConsole.Dock = System.Windows.Forms.DockStyle.Fill;
this.logConsole.ForeColor = System.Drawing.Color.SpringGreen; this.logConsole.ForeColor = System.Drawing.Color.SpringGreen;
this.logConsole.Location = new System.Drawing.Point(12, 93); this.logConsole.Location = new System.Drawing.Point(153, 4);
this.logConsole.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); this.logConsole.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.logConsole.Multiline = true; this.logConsole.Multiline = true;
this.logConsole.Name = "logConsole"; this.logConsole.Name = "logConsole";
this.logConsole.ScrollBars = System.Windows.Forms.ScrollBars.Both; this.logConsole.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.logConsole.Size = new System.Drawing.Size(470, 344); this.logConsole.Size = new System.Drawing.Size(572, 354);
this.logConsole.TabIndex = 1; this.logConsole.TabIndex = 1;
// //
// stringButton // stringButton
// //
this.stringButton.Location = new System.Drawing.Point(34, 39); this.stringButton.Location = new System.Drawing.Point(32, 22);
this.stringButton.Name = "stringButton"; this.stringButton.Name = "stringButton";
this.stringButton.Size = new System.Drawing.Size(75, 23); this.stringButton.Size = new System.Drawing.Size(75, 23);
this.stringButton.TabIndex = 2; this.stringButton.TabIndex = 2;
@ -60,7 +69,7 @@ namespace ClientForm
// //
// objectButton // objectButton
// //
this.objectButton.Location = new System.Drawing.Point(146, 39); this.objectButton.Location = new System.Drawing.Point(32, 69);
this.objectButton.Name = "objectButton"; this.objectButton.Name = "objectButton";
this.objectButton.Size = new System.Drawing.Size(75, 23); this.objectButton.Size = new System.Drawing.Size(75, 23);
this.objectButton.TabIndex = 2; this.objectButton.TabIndex = 2;
@ -70,7 +79,7 @@ namespace ClientForm
// //
// imageButton // imageButton
// //
this.imageButton.Location = new System.Drawing.Point(268, 39); this.imageButton.Location = new System.Drawing.Point(32, 111);
this.imageButton.Name = "imageButton"; this.imageButton.Name = "imageButton";
this.imageButton.Size = new System.Drawing.Size(75, 23); this.imageButton.Size = new System.Drawing.Size(75, 23);
this.imageButton.TabIndex = 2; this.imageButton.TabIndex = 2;
@ -80,7 +89,7 @@ namespace ClientForm
// //
// fileButton // fileButton
// //
this.fileButton.Location = new System.Drawing.Point(379, 39); this.fileButton.Location = new System.Drawing.Point(32, 152);
this.fileButton.Name = "fileButton"; this.fileButton.Name = "fileButton";
this.fileButton.Size = new System.Drawing.Size(75, 23); this.fileButton.Size = new System.Drawing.Size(75, 23);
this.fileButton.TabIndex = 2; this.fileButton.TabIndex = 2;
@ -88,19 +97,70 @@ namespace ClientForm
this.fileButton.UseVisualStyleBackColor = true; this.fileButton.UseVisualStyleBackColor = true;
this.fileButton.Click += new System.EventHandler(this.fileButton_Click); this.fileButton.Click += new System.EventHandler(this.fileButton_Click);
// //
// mainTablePanel
//
this.mainTablePanel.ColumnCount = 2;
this.mainTablePanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 150F));
this.mainTablePanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.mainTablePanel.Controls.Add(this.logConsole, 1, 0);
this.mainTablePanel.Controls.Add(this.panel1, 0, 0);
this.mainTablePanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.mainTablePanel.Location = new System.Drawing.Point(0, 0);
this.mainTablePanel.Name = "mainTablePanel";
this.mainTablePanel.RowCount = 1;
this.mainTablePanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.mainTablePanel.Size = new System.Drawing.Size(728, 362);
this.mainTablePanel.TabIndex = 3;
//
// panel1
//
this.panel1.Controls.Add(this.stringButton);
this.panel1.Controls.Add(this.fileButton);
this.panel1.Controls.Add(this.objectButton);
this.panel1.Controls.Add(this.imageButton);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(3, 3);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(144, 356);
this.panel1.TabIndex = 2;
//
// statusStrip
//
this.statusStrip.ImageScalingSize = new System.Drawing.Size(20, 20);
this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabel1,
this.heartBeatStatus});
this.statusStrip.Location = new System.Drawing.Point(0, 344);
this.statusStrip.Name = "statusStrip";
this.statusStrip.Size = new System.Drawing.Size(728, 18);
this.statusStrip.TabIndex = 4;
this.statusStrip.Text = "statusStrip1";
//
// toolStripStatusLabel1
//
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
this.toolStripStatusLabel1.Size = new System.Drawing.Size(0, 13);
//
// heartBeatStatus
//
this.heartBeatStatus.Name = "heartBeatStatus";
this.heartBeatStatus.Size = new System.Drawing.Size(0, 13);
//
// MainForm // MainForm
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(498, 450); this.ClientSize = new System.Drawing.Size(910, 452);
this.Controls.Add(this.fileButton); this.Controls.Add(this.statusStrip);
this.Controls.Add(this.imageButton); this.Controls.Add(this.mainTablePanel);
this.Controls.Add(this.objectButton);
this.Controls.Add(this.stringButton);
this.Controls.Add(this.logConsole);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Name = "MainForm"; this.Name = "MainForm";
this.Text = "Client"; this.Text = "Client";
this.mainTablePanel.ResumeLayout(false);
this.mainTablePanel.PerformLayout();
this.panel1.ResumeLayout(false);
this.statusStrip.ResumeLayout(false);
this.statusStrip.PerformLayout();
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
@ -113,6 +173,11 @@ namespace ClientForm
private System.Windows.Forms.Button objectButton; private System.Windows.Forms.Button objectButton;
private System.Windows.Forms.Button imageButton; private System.Windows.Forms.Button imageButton;
private System.Windows.Forms.Button fileButton; private System.Windows.Forms.Button fileButton;
private System.Windows.Forms.TableLayoutPanel mainTablePanel;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.StatusStrip statusStrip;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;
private System.Windows.Forms.ToolStripStatusLabel heartBeatStatus;
} }
} }

@ -145,6 +145,12 @@ namespace ClientForm
heartBeatClient.Connect(); heartBeatClient.Connect();
} }
UpdateHeartBeat();
}
private void UpdateHeartBeat()
{
heartBeatStatus.Text = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
} }
private void Client_OnReceived(PClient sender, PDataType dataType, byte[] data) private void Client_OnReceived(PClient sender, PDataType dataType, byte[] data)

@ -117,4 +117,7 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<metadata name="statusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>21, 21</value>
</metadata>
</root> </root>

@ -15,7 +15,7 @@ namespace PComm
{ {
public class PClient public class PClient
{ {
private readonly int BUFF_SIZE = 1000 * 50; // 50kB private readonly int BUFF_SIZE = 1000 * 1000; // 1MB
public delegate void ClientConnectedHandler(PClient sender); public delegate void ClientConnectedHandler(PClient sender);
public event ClientConnectedHandler OnConnected; public event ClientConnectedHandler OnConnected;

@ -0,0 +1,153 @@
using PComm;
using PObject;
using PUtility;
using ServerForm.ChildForm;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ServerForm
{
delegate void LogHandler(PClient client, string log);
delegate void FormHandler(Form form);
public partial class MainForm : Form
{
private readonly int PORT = 37777;
private readonly int HB_PORT = 37778;
private PServer mainServer;
private PServer heartBeatServer;
private LogHandler logHandler;
private FormHandler formHandler;
private System.Timers.Timer clientCheckTimer;
private System.Timers.Timer GarbageTimer;
public MainForm()
{
InitializeComponent();
InitInstance();
}
private void InitInstance()
{
string path = Application.StartupPath;
heartBeatServer = new PServer(HB_PORT);
mainServer = new PServer(PORT);
logHandler = new LogHandler(WriteLog);
formHandler = new FormHandler(ShowForm);
heartBeatServer.OnDataReceived += HeartBeatServer_OnDataReceived;
mainServer.OnDataReceived += MainServer_OnDataReceived;
heartBeatServer.Start();
mainServer.Start();
clientCheckTimer = new System.Timers.Timer();
clientCheckTimer.Interval = 1000;
clientCheckTimer.Elapsed += ClientCheckTimer_Elapsed;
clientCheckTimer.Start();
GarbageTimer = new System.Timers.Timer();
GarbageTimer.Interval = 1000 * 10;
GarbageTimer.Elapsed += GarbageTimer_Elapsed;
GarbageTimer.Start();
}
private void WriteLog(PClient client, string log)
{
if (this.InvokeRequired)
{
this.Invoke((MethodInvoker)delegate () { WriteLog(client, log); });
}
else
{
logConsole.AppendText($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}] {client.ID}: {log}" + Environment.NewLine);
//PUtil.ScrollToEnd(logConsole);
}
}
private void ShowForm(Form form)
{
if (this.InvokeRequired)
{
this.Invoke((MethodInvoker)delegate () { ShowForm(form); });
}
else
{
form.Show();
}
}
private void CheckClientInfo(List<PClientInfo> clinetInfoList)
{
if (this.InvokeRequired)
{
this.Invoke((MethodInvoker)delegate () { CheckClientInfo(clinetInfoList); });
}
else
{
if (clientListBox.Items != null && clientListBox.Items.Count > 1)
clientListBox.Items.Clear();
foreach (PClientInfo clientInfo in clinetInfoList)
{
PClient client = clientInfo.Client;
string clientView = $"{client.ID}({client.EndPoint.Address}:{client.EndPoint.Port})";
clientListBox.Items.Add(clientView);
}
}
}
private void MainServer_OnDataReceived(PClientInfo sender, PDataType dataType, byte[] data)
{
DataManager.Instance.Process(sender, dataType, data, logHandler, formHandler);
}
private void HeartBeatServer_OnDataReceived(PClientInfo sender, PDataType dataType, byte[] data)
{
if (dataType != PDataType.SimpleString)
{
logHandler(sender.Client, "ERROR!!! WRONG DATA TYPE FOR HEART BEAT!!!");
return;
}
string msg = Encoding.UTF8.GetString(data, 0, data.Length);
if (msg != PServer.HB_CHECK)
logHandler(sender.Client, "WARNING!!! BAD HEARTBEAT!!!");
sender.Client.Send(PServer.HB_CHECK);
UpdateHeartBeat();
}
private void UpdateHeartBeat()
{
heartBeatStatus.Text = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
}
private void ClientCheckTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
List<PClientInfo> clientInfoList = new List<PClientInfo>(mainServer.ClientInfoList.Count + heartBeatServer.ClientInfoList.Count);
clientInfoList.AddRange(mainServer.ClientInfoList);
clientInfoList.AddRange(heartBeatServer.ClientInfoList);
CheckClientInfo(clientInfoList);
}
private void GarbageTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
GC.Collect();
}
}
}

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="statusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>22, 21</value>
</metadata>
</root>

@ -31,41 +31,82 @@ namespace ServerForm
{ {
this.logConsole = new System.Windows.Forms.TextBox(); this.logConsole = new System.Windows.Forms.TextBox();
this.clientListBox = new System.Windows.Forms.ListBox(); this.clientListBox = new System.Windows.Forms.ListBox();
this.mainTablePanel = new System.Windows.Forms.TableLayoutPanel();
this.statusStrip = new System.Windows.Forms.StatusStrip();
this.heartBeatStatus = new System.Windows.Forms.ToolStripStatusLabel();
this.mainTablePanel.SuspendLayout();
this.statusStrip.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// logConsole // logConsole
// //
this.logConsole.BackColor = System.Drawing.Color.Black; this.logConsole.BackColor = System.Drawing.Color.Black;
this.logConsole.Dock = System.Windows.Forms.DockStyle.Fill;
this.logConsole.ForeColor = System.Drawing.Color.SpringGreen; this.logConsole.ForeColor = System.Drawing.Color.SpringGreen;
this.logConsole.Location = new System.Drawing.Point(251, 13); this.logConsole.Location = new System.Drawing.Point(203, 4);
this.logConsole.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); this.logConsole.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.logConsole.Multiline = true; this.logConsole.Multiline = true;
this.logConsole.Name = "logConsole"; this.logConsole.Name = "logConsole";
this.logConsole.ScrollBars = System.Windows.Forms.ScrollBars.Both; this.logConsole.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.logConsole.Size = new System.Drawing.Size(470, 364); this.logConsole.Size = new System.Drawing.Size(626, 345);
this.logConsole.TabIndex = 0; this.logConsole.TabIndex = 0;
// //
// clientListBox // clientListBox
// //
this.clientListBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.clientListBox.FormattingEnabled = true; this.clientListBox.FormattingEnabled = true;
this.clientListBox.ItemHeight = 15; this.clientListBox.ItemHeight = 15;
this.clientListBox.Location = new System.Drawing.Point(12, 13); this.clientListBox.Location = new System.Drawing.Point(3, 3);
this.clientListBox.Name = "clientListBox"; this.clientListBox.Name = "clientListBox";
this.clientListBox.Size = new System.Drawing.Size(233, 364); this.clientListBox.Size = new System.Drawing.Size(194, 347);
this.clientListBox.TabIndex = 2; this.clientListBox.TabIndex = 2;
// //
// mainTablePanel
//
this.mainTablePanel.ColumnCount = 2;
this.mainTablePanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 200F));
this.mainTablePanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.mainTablePanel.Controls.Add(this.clientListBox, 0, 0);
this.mainTablePanel.Controls.Add(this.logConsole, 1, 0);
this.mainTablePanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.mainTablePanel.Location = new System.Drawing.Point(0, 0);
this.mainTablePanel.Name = "mainTablePanel";
this.mainTablePanel.RowCount = 1;
this.mainTablePanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.mainTablePanel.Size = new System.Drawing.Size(832, 353);
this.mainTablePanel.TabIndex = 3;
//
// statusStrip
//
this.statusStrip.ImageScalingSize = new System.Drawing.Size(20, 20);
this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.heartBeatStatus});
this.statusStrip.Location = new System.Drawing.Point(0, 331);
this.statusStrip.Name = "statusStrip";
this.statusStrip.Size = new System.Drawing.Size(832, 22);
this.statusStrip.TabIndex = 4;
//
// heartBeatStatus
//
this.heartBeatStatus.Name = "heartBeatStatus";
this.heartBeatStatus.Size = new System.Drawing.Size(0, 17);
//
// MainForm // MainForm
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(733, 390); this.ClientSize = new System.Drawing.Size(832, 353);
this.Controls.Add(this.clientListBox); this.Controls.Add(this.statusStrip);
this.Controls.Add(this.logConsole); this.Controls.Add(this.mainTablePanel);
this.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129))); this.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.Name = "MainForm"; this.Name = "MainForm";
this.Text = "Server"; this.Text = "Server";
this.mainTablePanel.ResumeLayout(false);
this.mainTablePanel.PerformLayout();
this.statusStrip.ResumeLayout(false);
this.statusStrip.PerformLayout();
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
@ -75,6 +116,9 @@ namespace ServerForm
private System.Windows.Forms.TextBox logConsole; private System.Windows.Forms.TextBox logConsole;
private System.Windows.Forms.ListBox clientListBox; private System.Windows.Forms.ListBox clientListBox;
private System.Windows.Forms.TableLayoutPanel mainTablePanel;
private System.Windows.Forms.StatusStrip statusStrip;
private System.Windows.Forms.ToolStripStatusLabel heartBeatStatus;
} }
} }

Loading…
Cancel
Save