Form1.cs
上传用户:ykjgjymj
上传日期:2013-06-16
资源大小:43k
文件大小:7k
源码类别:

Ftp服务器

开发平台:

Visual Basic

  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.Net;
  8. using System.Net.Sockets;
  9. using System.Threading;
  10. using System.IO;
  11. using System.Text;
  12. namespace FtpServer
  13. {
  14. /// <summary>
  15. /// Form1 的摘要说明。
  16. /// </summary>
  17. public class Form1 : System.Windows.Forms.Form
  18. {
  19. // private bool flag=false;
  20. private int port;
  21. private Socket socket;
  22. private int number;
  23. private int i;
  24. private int j;
  25. private TcpListener listener;
  26. private FileStream filestream;
  27. private System.Windows.Forms.Button button1;
  28. private System.Windows.Forms.Button button2;
  29. private System.Windows.Forms.Label label1;
  30. private System.Windows.Forms.Label label2;
  31. private System.Windows.Forms.Label label3;
  32. private System.Windows.Forms.TextBox textBox1;
  33. private System.Windows.Forms.TextBox textBox2;
  34. private System.Windows.Forms.TextBox textBox3;
  35. /// <summary>
  36. /// 必需的设计器变量。
  37. /// </summary>
  38. private System.ComponentModel.Container components = null;
  39. public Form1()
  40. {
  41. //
  42. // Windows 窗体设计器支持所必需的
  43. //
  44. InitializeComponent();
  45. string[] str = new string[1024];
  46. string fileNameList = "";
  47. //设置起始路径为当前目录
  48. string strPath = Application.StartupPath + @"....";
  49. //读取文件 当然strPath也可以赋值成其他路径 比如"c:\jin"
  50. for (i=0;i<Directory.GetFiles(strPath,"*").Length;i++)
  51. {
  52. str[i]=Directory.GetFiles(strPath)[i];
  53. fileNameList += str[i]+"rn";
  54. }
  55. textBox2.Text = fileNameList;
  56. //
  57. // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
  58. //
  59. }
  60. /// <summary>
  61. /// 清理所有正在使用的资源。
  62. /// </summary>
  63. protected override void Dispose( bool disposing )
  64. {
  65. if( disposing )
  66. {
  67. if (components != null) 
  68. {
  69. components.Dispose();
  70. }
  71. }
  72. base.Dispose( disposing );
  73. }
  74. #region Windows Form Designer generated code
  75. /// <summary>
  76. /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  77. /// 此方法的内容。
  78. /// </summary>
  79. private void InitializeComponent()
  80. {
  81. this.button1 = new System.Windows.Forms.Button();
  82. this.button2 = new System.Windows.Forms.Button();
  83. this.label1 = new System.Windows.Forms.Label();
  84. this.label2 = new System.Windows.Forms.Label();
  85. this.label3 = new System.Windows.Forms.Label();
  86. this.textBox1 = new System.Windows.Forms.TextBox();
  87. this.textBox2 = new System.Windows.Forms.TextBox();
  88. this.textBox3 = new System.Windows.Forms.TextBox();
  89. this.SuspendLayout();
  90. // 
  91. // button1
  92. // 
  93. this.button1.Location = new System.Drawing.Point(280, 16);
  94. this.button1.Name = "button1";
  95. this.button1.Size = new System.Drawing.Size(64, 24);
  96. this.button1.TabIndex = 0;
  97. this.button1.Text = "开始";
  98. this.button1.Click += new System.EventHandler(this.BeginBtn_click);
  99. // 
  100. // button2
  101. // 
  102. this.button2.Location = new System.Drawing.Point(360, 16);
  103. this.button2.Name = "button2";
  104. this.button2.Size = new System.Drawing.Size(72, 24);
  105. this.button2.TabIndex = 1;
  106. this.button2.Text = "停止";
  107. this.button2.Click += new System.EventHandler(this.CloseBtn_click);
  108. // 
  109. // label1
  110. // 
  111. this.label1.Location = new System.Drawing.Point(8, 16);
  112. this.label1.Name = "label1";
  113. this.label1.Size = new System.Drawing.Size(56, 24);
  114. this.label1.TabIndex = 2;
  115. this.label1.Text = "端口:";
  116. // 
  117. // label2
  118. // 
  119. this.label2.Location = new System.Drawing.Point(8, 48);
  120. this.label2.Name = "label2";
  121. this.label2.Size = new System.Drawing.Size(72, 16);
  122. this.label2.TabIndex = 3;
  123. this.label2.Text = "文件列表:";
  124. // 
  125. // label3
  126. // 
  127. this.label3.Location = new System.Drawing.Point(8, 216);
  128. this.label3.Name = "label3";
  129. this.label3.Size = new System.Drawing.Size(144, 16);
  130. this.label3.TabIndex = 4;
  131. this.label3.Text = "客户端信息:";
  132. // 
  133. // textBox1
  134. // 
  135. this.textBox1.Location = new System.Drawing.Point(96, 16);
  136. this.textBox1.Name = "textBox1";
  137. this.textBox1.Size = new System.Drawing.Size(168, 21);
  138. this.textBox1.TabIndex = 5;
  139. this.textBox1.Text = "";
  140. // 
  141. // textBox2
  142. // 
  143. this.textBox2.Location = new System.Drawing.Point(8, 72);
  144. this.textBox2.Multiline = true;
  145. this.textBox2.Name = "textBox2";
  146. this.textBox2.Size = new System.Drawing.Size(424, 136);
  147. this.textBox2.TabIndex = 6;
  148. this.textBox2.Text = "";
  149. // 
  150. // textBox3
  151. // 
  152. this.textBox3.Location = new System.Drawing.Point(8, 240);
  153. this.textBox3.Multiline = true;
  154. this.textBox3.Name = "textBox3";
  155. this.textBox3.Size = new System.Drawing.Size(424, 80);
  156. this.textBox3.TabIndex = 7;
  157. this.textBox3.Text = "";
  158. // 
  159. // Form1
  160. // 
  161. this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
  162. this.ClientSize = new System.Drawing.Size(440, 341);
  163. this.Controls.Add(this.textBox3);
  164. this.Controls.Add(this.textBox2);
  165. this.Controls.Add(this.textBox1);
  166. this.Controls.Add(this.label3);
  167. this.Controls.Add(this.label2);
  168. this.Controls.Add(this.label1);
  169. this.Controls.Add(this.button2);
  170. this.Controls.Add(this.button1);
  171. this.Name = "Form1";
  172. this.Text = "Ftp服务器";
  173. this.ResumeLayout(false);
  174. }
  175. #endregion
  176. /// <summary>
  177. /// 应用程序的主入口点。
  178. /// </summary>
  179. [STAThread]
  180. static void Main() 
  181. {
  182. Application.Run(new Form1());
  183. }
  184. private void BeginBtn_click(object sender, System.EventArgs e)
  185. {
  186. try
  187. {
  188. //端口号
  189. port = Int32.Parse(textBox1.Text);
  190. }
  191. catch{MessageBox.Show("Please enter a number!");}
  192. try
  193. {
  194. //建立侦听
  195. listener = new TcpListener(port);
  196. listener.Start();
  197. Thread thread = new Thread(new ThreadStart(receive));
  198. thread.Start();
  199. }
  200. catch(Exception ee){MessageBox.Show(ee.Message);}
  201. }
  202. public void receive()
  203. {
  204. try
  205. {
  206. socket = listener.AcceptSocket();
  207. }
  208. catch{return;}
  209. //如果连接通过 则开始发送相关信息 并接收来自客户端的信息
  210. if (socket.Connected)
  211. {
  212. string str = textBox2.Text;
  213. byte[] bytee = System.Text.Encoding.BigEndianUnicode.GetBytes(str.ToCharArray());
  214. socket.Send(bytee,bytee.Length,0);
  215. NetworkStream stream = new NetworkStream(socket);
  216. byte[] by = new byte[1024];
  217. int i = socket.Receive(by,by.Length,0);
  218. string s = System.Text.Encoding.BigEndianUnicode.GetString(by);
  219. textBox3.AppendText(s);
  220. if( s.CompareTo("***The client has been closed!***") == 1 )
  221. {
  222. filestream=new FileStream(s.Substring(0,s.IndexOf("rn")),FileMode.Open,FileAccess.Read);
  223. byte[] buffer = new byte[1024];
  224. filestream.Seek(0,SeekOrigin.Begin);
  225. while((number=filestream.Read(buffer,0,1024))!=0)
  226. {
  227. stream.Write(buffer,0,number);
  228. stream.Flush();
  229. Console.WriteLine(filestream.Position);
  230. }
  231. filestream.Close();
  232. }
  233. }
  234. }
  235. private void CloseBtn_click(object sender, System.EventArgs e)
  236. {
  237. try
  238. {
  239. listener.Stop();
  240. }
  241. catch{MessageBox.Show("侦听尚未开始!");}
  242. }
  243. }
  244. }