Form1.cs
上传用户:lxycoco
上传日期:2022-07-21
资源大小:38457k
文件大小:7k
源码类别:

C#编程

开发平台:

Others

  1. using System;
  2. using System.Drawing;
  3. using System.Collections;
  4. using System.ComponentModel;
  5. using System.Windows.Forms;
  6. using System.Data;
  7. using System.IO;
  8. using System.Net;
  9. using System.Net.Sockets;
  10. using System.Text;
  11. using System.Threading;
  12. namespace Wrox.ProCSharp.InternetAccess.Messenger
  13. {
  14. /// <summary>
  15. /// Summary description for Form1.
  16. /// </summary>
  17. public class Form1 : System.Windows.Forms.Form
  18. {
  19. private System.Windows.Forms.Button button1;
  20. private System.Windows.Forms.TextBox txtHost;
  21. private System.Windows.Forms.Button button2;
  22. private System.Windows.Forms.RichTextBox txtInput;
  23. private System.Windows.Forms.Label label1;
  24. private System.Windows.Forms.Label label2;
  25. private System.Windows.Forms.Label label3;
  26. private System.Windows.Forms.RichTextBox txtDisplay;
  27. /// <summary>
  28. /// Required designer variable.
  29. /// </summary>
  30. private System.ComponentModel.Container components = null;
  31. public Form1()
  32. {
  33. //
  34. // Required for Windows Form Designer support
  35. //
  36. InitializeComponent();
  37. Thread thread = new Thread(new ThreadStart(Listen));
  38. thread.Start();
  39. //
  40. // TODO: Add any constructor code after InitializeComponent call
  41. //
  42. }
  43. /// <summary>
  44. /// Clean up any resources being used.
  45. /// </summary>
  46. protected override void Dispose( bool disposing )
  47. {
  48. if( disposing )
  49. {
  50. if (components != null) 
  51. {
  52. components.Dispose();
  53. }
  54. }
  55. base.Dispose( disposing );
  56. }
  57. #region Windows Form Designer generated code
  58. /// <summary>
  59. /// Required method for Designer support - do not modify
  60. /// the contents of this method with the code editor.
  61. /// </summary>
  62. private void InitializeComponent()
  63. {
  64. this.button1 = new System.Windows.Forms.Button();
  65. this.txtHost = new System.Windows.Forms.TextBox();
  66. this.button2 = new System.Windows.Forms.Button();
  67. this.txtInput = new System.Windows.Forms.RichTextBox();
  68. this.txtDisplay = new System.Windows.Forms.RichTextBox();
  69. this.label1 = new System.Windows.Forms.Label();
  70. this.label2 = new System.Windows.Forms.Label();
  71. this.label3 = new System.Windows.Forms.Label();
  72. this.SuspendLayout();
  73. // 
  74. // button1
  75. // 
  76. this.button1.Location = new System.Drawing.Point(232, 192);
  77. this.button1.Name = "button1";
  78. this.button1.Size = new System.Drawing.Size(208, 56);
  79. this.button1.TabIndex = 1;
  80. this.button1.Text = "Send Message";
  81. this.button1.Click += new System.EventHandler(this.button1_Click);
  82. // 
  83. // txtHost
  84. // 
  85. this.txtHost.Location = new System.Drawing.Point(16, 224);
  86. this.txtHost.Name = "txtHost";
  87. this.txtHost.Size = new System.Drawing.Size(200, 20);
  88. this.txtHost.TabIndex = 2;
  89. this.txtHost.Text = "localhost";
  90. this.txtHost.TextChanged += new System.EventHandler(this.txtHost_TextChanged);
  91. // 
  92. // button2
  93. // 
  94. this.button2.Location = new System.Drawing.Point(480, 208);
  95. this.button2.Name = "button2";
  96. this.button2.Size = new System.Drawing.Size(88, 24);
  97. this.button2.TabIndex = 3;
  98. this.button2.Text = "End Session";
  99. this.button2.Click += new System.EventHandler(this.button2_Click);
  100. // 
  101. // txtInput
  102. // 
  103. this.txtInput.Location = new System.Drawing.Point(8, 8);
  104. this.txtInput.Name = "txtInput";
  105. this.txtInput.Size = new System.Drawing.Size(272, 144);
  106. this.txtInput.TabIndex = 4;
  107. this.txtInput.Text = "Start....";
  108. // 
  109. // txtDisplay
  110. // 
  111. this.txtDisplay.Location = new System.Drawing.Point(304, 8);
  112. this.txtDisplay.Name = "txtDisplay";
  113. this.txtDisplay.Size = new System.Drawing.Size(272, 144);
  114. this.txtDisplay.TabIndex = 5;
  115. this.txtDisplay.Text = "Start....";
  116. // 
  117. // label1
  118. // 
  119. this.label1.Location = new System.Drawing.Point(16, 160);
  120. this.label1.Name = "label1";
  121. this.label1.Size = new System.Drawing.Size(248, 16);
  122. this.label1.TabIndex = 6;
  123. this.label1.Text = "ENTER MESSAGE HERE";
  124. // 
  125. // label2
  126. // 
  127. this.label2.Location = new System.Drawing.Point(304, 160);
  128. this.label2.Name = "label2";
  129. this.label2.Size = new System.Drawing.Size(248, 16);
  130. this.label2.TabIndex = 7;
  131. this.label2.Text = "RECEIVED TEXT HERE.....";
  132. // 
  133. // label3
  134. // 
  135. this.label3.Location = new System.Drawing.Point(16, 200);
  136. this.label3.Name = "label3";
  137. this.label3.Size = new System.Drawing.Size(200, 16);
  138. this.label3.TabIndex = 8;
  139. this.label3.Text = "SERVER";
  140. this.label3.Click += new System.EventHandler(this.label3_Click);
  141. // 
  142. // Form1
  143. // 
  144. this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
  145. this.ClientSize = new System.Drawing.Size(592, 269);
  146. this.Controls.AddRange(new System.Windows.Forms.Control[] {
  147.   this.label3,
  148.   this.label2,
  149.   this.label1,
  150.   this.txtDisplay,
  151.   this.txtInput,
  152.   this.button2,
  153.   this.txtHost,
  154.   this.button1});
  155. this.Name = "Form1";
  156. this.Text = "Form1";
  157. this.ResumeLayout(false);
  158. }
  159. #endregion
  160. /// <summary>
  161. /// The main entry point for the application.
  162. /// </summary>
  163. [STAThread]
  164. static void Main() 
  165. {
  166. Application.Run(new Form1());
  167. }
  168. /// 
  169. public void Listen()
  170. {
  171. TcpListener tcpListener = new TcpListener(2112);
  172. string text = "<START>";
  173. do 
  174. {
  175. tcpListener.Start();
  176. TcpClient tcpClient = tcpListener.AcceptTcpClient();
  177.    
  178. NetworkStream ns = tcpClient.GetStream();
  179. byte[] bytes = new byte[tcpClient.ReceiveBufferSize];
  180. // Read can return anything from 0 to numBytesToRead. 
  181. // This method blocks until at least one byte is read.
  182. ns.Read(bytes, 0, (int) tcpClient.ReceiveBufferSize);
  183.              
  184. // Returns the data received from the host to the console.
  185. text = Encoding.ASCII.GetString(bytes);
  186. txtDisplay.Text = text;
  187. ns.Close();
  188. tcpClient.Close();
  189. } while (text.Substring(0,5)!= "<END>");
  190. tcpListener.Stop();
  191. txtDisplay.Text = "Everything has finished.";
  192. }
  193. public void UpdateDisplay(string text)
  194. {
  195. txtDisplay.Text = text;
  196. }
  197. protected delegate void UpdateDisplayDelegate(string text);
  198. public void SendMessage(string text)
  199. {
  200. try{
  201. TcpClient tcpClient = new TcpClient(txtHost.Text, 2112);
  202. NetworkStream networkStream = tcpClient.GetStream();
  203. Byte[] sendBytes =  Encoding.ASCII.GetBytes(text);
  204. networkStream.Write(sendBytes, 0, sendBytes.Length);
  205. }
  206. catch(SocketException e) {MessageBox.Show("A Socket Error : "+e.ToString());}
  207. catch(Exception e) {MessageBox.Show(e.ToString());}
  208. }
  209. private void button1_Click(object sender, System.EventArgs e )
  210. {
  211. SendMessage(txtInput.Text);
  212. }
  213. private void button2_Click(object sender, System.EventArgs e)
  214. {
  215. SendMessage("<END>");
  216. }
  217. private void label3_Click(object sender, System.EventArgs e)
  218. {
  219. }
  220. private void txtHost_TextChanged(object sender, System.EventArgs e)
  221. {
  222. }
  223. }
  224. }