• 大小: 28KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-27
  • 语言: C#
  • 标签: C#  Socket  

资源简介

给刚接触Socket的人学习用的,技术含量不高。为了让新人可以看得懂,代码量很小,力求简单。由于使用了C#3.0的匿名委托,不是VS2008的用户需要自己将匿名委托部分修改后才可以执行,VS2008用户可以直接打开并测试效果。

资源截图

代码片段和文件信息

using System;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace Client
{
    public partial class Form1 : Form
    {

        TcpClient tcp;
        IPEndPoint remoteEP;
        FileStream fs;
        bool isstart = false;

        Action showMessage;
        public Form1()
        {
            InitializeComponent();


            listView1.Columns.Add(“信息“).Width = listView1.Width / 2;
            listView1.Columns.Add(“时间“).Width = listView1.Width / 2;
            showMessage = delegate(string msg) { listView1.Items.Add(new ListViewItem(new string[] { msg DateTime.Now.ToString() })); };

            button2.Enabled = false;
        }

        private void button1_Click(object sender EventArgs e)
        {
            textBox1.Enabled = false;
            textBox2.Enabled = false;
            textBox3.Enabled = false;
            button1.Enabled = false;
            button2.Enabled = true;
            button3.Enabled = false;

            try
            {
                remoteEP = new IPEndPoint(IPAddress.Parse(textBox1.Text) 12345);

                tcp = new TcpClient();
                tcp.Client.ReceiveTimeout = 2000;
                isstart = true;

                tcp.Client.BeginConnect(remoteEP callback tcp.Client);

            }
            catch (Exception ex)
            {
                ShowMessage(ex.Message);
            }
        }

        void callback(IAsyncResult ar)
        {
            Socket handler = (Socket)ar.AsyncState;
            try
            {
                handler.EndConnect(ar);
                //发送请求下载的文件名。
                byte[] bytes = Encoding.UTF8.GetBytes(textBox2.Text);
                handler.Send(bytes);

                //接收下载的文件。
                byte[] receive = new byte[1024];
                int count = 0;
                using (fs = new FileStream(textBox3.Text FileMode.OpenOrCreate))
                {
                    //fs.Position = 0;
                    while (isstart)
                    {
                        count = handler.Receive(receive);
                        if (count > 0)
                        {
                            fs.Write(receive 0 count);
                        }
                        else
                        {
                            //注意,多数情况下收到字节数为0就意味着对方关闭了连接,
                            //但是否是数据接收完整应该进行文件长度比较,我这里只是简单模拟下,未作任何验证。
                            break;
                        }
                    }
                }

                handler.Close();

                Stop();
                ShowMessage(“传输完毕。(若看不到下载的文件,说明服务器端不存在该文件)“);
            }
            catch (Exception ex)
            {

                handler.Close();

                Stop();
                ShowMessage(ex.Message);
            }
        }

        void Stop()
        

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        490  2007-07-21 01:33  Client\bin\Release\Client.vshost.exe.manifest

     文件       3718  2009-10-30 16:01  Client\Client.csproj

     文件       4288  2009-10-30 16:11  Client\Form1.cs

     文件       7263  2009-10-30 15:58  Client\Form1.Designer.cs

     文件       6017  2009-10-30 15:58  Client\Form1.resx

     文件        498  2009-10-30 14:43  Client\Program.cs

     文件       1424  2009-10-30 14:43  Client\Properties\AssemblyInfo.cs

     文件       2841  2009-10-30 14:43  Client\Properties\Resources.Designer.cs

     文件       5612  2009-10-30 14:43  Client\Properties\Resources.resx

     文件       1091  2009-10-30 14:43  Client\Properties\Settings.Designer.cs

     文件        249  2009-10-30 14:43  Client\Properties\Settings.settings

     文件        204  2009-10-30 16:12  Service\obj\Release\Service.csproj.FileListAbsolute.txt

     文件        500  2009-10-30 14:27  Service\Program.cs

     文件       1426  2009-09-08 11:07  Service\Properties\AssemblyInfo.cs

     文件       2843  2009-09-08 11:07  Service\Properties\Resources.Designer.cs

     文件       5612  2009-09-08 11:07  Service\Properties\Resources.resx

     文件       1092  2009-09-08 11:07  Service\Properties\Settings.Designer.cs

     文件        249  2009-09-08 11:07  Service\Properties\Settings.settings

     文件       4312  2009-10-30 15:51  Service\Server.cs

     文件       5203  2009-10-30 15:03  Service\Server.Designer.cs

     文件       6022  2009-10-30 15:03  Service\Server.resx

     文件       3841  2009-10-30 16:04  Service\Service.csproj

     文件        168  2009-10-30 16:12  Service\Service.csproj.user

     文件       1383  2009-10-30 16:04  WindowsFormsApplication2.sln

    ..A..H.     59392  2009-10-30 16:12  WindowsFormsApplication2.suo

     目录          0  2009-10-30 14:43  Client\obj\Debug\TempPE

     目录          0  2009-10-30 15:58  Client\obj\Release\Refactor

     目录          0  2009-10-30 14:43  Client\obj\Release\TempPE

     目录          0  2009-09-08 11:07  Service\obj\Debug\TempPE

     目录          0  2009-09-15 09:51  Service\obj\Release\Refactor

............此处省略19个文件信息

评论

共有 条评论