【废弃】C# 自攻自受型文件传输程序求解


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

namespace FileTransmit
{
public partial class FileTransmit : Form
{
delegate void changeControlState();
private void setControlState()
{
if (this.InvokeRequired)
{
this.Invoke(new changeControlState(setControlState));
return;
}
btn_Transmit.Enabled = true;
}

    public FileTransmit()
    {
        InitializeComponent();
        tex_IP1.Text = "192";
        tex_IP2.Text = "168";
        tex_IP3.Text = "1";
        tex_IP4.Text = "109";

        IPEndPoint hostEP_Server = new IPEndPoint(IPAddress.Any, 0368);
        fileTranser_Server.socket_Server.Bind(hostEP_Server);
        fileTranser_Server.socket_Server.Listen(5);
        //开启 线程接收数据
        fileTranser_Server.tReceive = new Thread(fileTranser_Server.fileReceive);
        fileTranser_Server.tReceive.IsBackground = true;
        fileTranser_Server.tReceive.Start();
    }

    //组合 数据包
    private byte[] CombomBinaryArray(byte[] srcArray1, byte[] srcArray2)
    {
        byte[] newArray = new byte[srcArray1.Length + srcArray2.Length];
        Array.Copy(srcArray1, 0, newArray, 0, srcArray1.Length);
        Array.Copy(srcArray2, 0, newArray, srcArray1.Length, srcArray2.Length);
        return newArray;
    }


    Thread tCheckLink;
    IPAddress ipAddr;
    IPEndPoint hostEP_Client;
    Socket socket_Client;

    FileTranser_Server fileTranser_Server = new FileTranser_Server();

    private void Link()
    {
        //判断 是否正在连接
        if (!fileTranser_Server.isConnected)
        {
            //尝试 连接远程服务器
            try
            {
                hostEP_Client = new IPEndPoint(ipAddr, 0368);
                socket_Client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                socket_Client.Connect(hostEP_Client);
                fileTranser_Server.isConnected = true;
            }
            catch
            {
                MessageBox.Show("连接失败");
                socket_Client.Close();
                fileTranser_Server.isConnected = false;
                return;
            }
        }
        fileTranser_Server.isConnected = false;
        MessageBox.Show("连接成功");
        //激活 传送按钮
        setControlState();
    }

    private void Send()
    {
        //尝试 数据传送
        try
        {
            string fileExt = "null";
            //判断 连接是否中断
            if (!fileTranser_Server.isConnected)
            {
                hostEP_Client = new IPEndPoint(ipAddr, 0368);
                socket_Client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                socket_Client.Connect(hostEP_Client);
                fileTranser_Server.isConnected = true;
            }
            //声明 文件信息
            byte[] fileArray;
            //获取 文件路径
            string filePath = tex_FilePath.Text.ToString();
            string fileName = filePath.Substring(filePath.LastIndexOf("\\") + 1);
            //打开 文件
            FileStream FS = File.Open(filePath, FileMode.Open);
            //获取 文件数据流
            byte[] tmpdata = new byte[FS.Length];
            FS.Read(tmpdata, 0, tmpdata.Length);
            FS.Close();
            //装填 文件扩展名
            //区分 非空扩展名
            if (fileName.LastIndexOf(".") != -1)
                fileExt = fileName.Substring(fileName.LastIndexOf(".") + 1);
            byte[] fileExtArray = Encoding.UTF8.GetBytes(fileExt);
            fileArray = fileExtArray;
            //装填 文件扩展名长度
            byte[] fileExtLeng = Encoding.UTF8.GetBytes(fileExtArray.Length.ToString("D1"));
            fileArray = CombomBinaryArray(fileExtLeng, fileArray);
            //装填 文件名
            //区分 非空扩展名文件
            if (fileName.LastIndexOf(".") != -1)
                fileName = fileName.Substring(0, fileName.LastIndexOf("."));
            byte[] fileNameArray = Encoding.UTF8.GetBytes(fileName);
            fileArray = CombomBinaryArray(fileNameArray, fileArray);
            //装填 文件名长度
            byte[] fileNameLeng = Encoding.UTF8.GetBytes(fileNameArray.Length.ToString("D2"));
            fileArray = CombomBinaryArray(fileNameLeng, fileArray);
            //装填 数据流长度
            byte[] fileLengArray = Encoding.UTF8.GetBytes(tmpdata.Length.ToString("D10"));
            fileArray = CombomBinaryArray(fileArray, fileLengArray);
            //组合 文件信息与文件数据流
            byte[] fileData = CombomBinaryArray(fileArray, tmpdata);
            //发送 文件包
            socket_Client.Send(fileData, fileData.Length, 0);
            //接收 反馈信息
            string recvStr = "";
            byte[] recvBytes = new byte[1024];
            int bytes = 0;
            while (true)
            {
                if (!fileTranser_Server.isConnected)
                {
                    bytes = socket_Client.Receive(recvBytes, recvBytes.Length, 0);
                    recvStr = Encoding.UTF8.GetString(recvBytes);
                    MessageBox.Show(recvStr);
                    //关闭 socket
                    socket_Client.Shutdown(SocketShutdown.Both);
                    socket_Client.Close();
                }
            }
        }
        catch (Exception err)
        {

        }
    }
    private void Btn_Transmit_Click(object sender, EventArgs e)
    {
        if (string.IsNullOrEmpty(tex_FilePath.Text))
        {
            MessageBox.Show("文件路径为空");
            return;
        }
        //创建 线程进行数据传送
        Thread tTransmit = new Thread(Send);
        tTransmit.IsBackground = true;
        tTransmit.Start();
    }

    private void btn_Exit_Click(object sender, EventArgs e)
    {
        if(tCheckLink!=null)
            tCheckLink.Abort();
        if (fileTranser_Server.tReceive != null)
            fileTranser_Server.tReceive.Abort();
        fileTranser_Server.socket_Server.Dispose();
        fileTranser_Server.socket_Server.Close();
        fileTranser_Server.isConnected = true;
        this.Dispose(true);
        this.Close();
        Application.Exit();
    }

    private void btn_Select_Click(object sender, EventArgs e)
    {
        //打开 文件选择窗口
        OpenFileDialog openFile = new OpenFileDialog();
        //读取 配置文件
        string tmpPath = Environment.CurrentDirectory + "\\config.ini";
        FileStream fs = new FileStream(tmpPath, FileMode.OpenOrCreate);
        byte[] tmpStr = new byte[fs.Length];
        fs.Read(tmpStr, 0, tmpStr.Length);
        fs.Close();
        //设置 初始路径为配置文件内路径
        if (!string.IsNullOrEmpty(tmpStr.ToString()))
        {
            openFile.InitialDirectory = tmpStr.ToString();
        }
        //设置 文件选择类型
        openFile.Filter = "All files(*.*)|*.*";
        openFile.FilterIndex = 1;
        openFile.RestoreDirectory = false;
        if (openFile.ShowDialog() == DialogResult.OK)
        {
            //显示 所选路径
            tex_FilePath.Text = openFile.FileName;
            //记录 所选路径于配置文件
            fs = new FileStream(tmpPath, FileMode.Open);
            fs.Write(Encoding.UTF8.GetBytes(openFile.FileName), 0, openFile.FileName.Length);
            fs.Close();
        }
    }

    private void onKeyPress(object sender, KeyPressEventArgs e)
    {
        Control actCtl = this.ActiveControl;
        Control nextCtl = this.GetNextControl(actCtl, true);
        Control lastCtl = this.GetNextControl(actCtl, false);
        //控制 输入字符
        if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8)
        {
            e.Handled = true;
        }
        //自动 换栏
        if (actCtl != tex_IP4)
        {
            if (e.KeyChar == '.')
            {
                nextCtl.Focus();
                return;
            }
            if (actCtl.Text.Length == 3 && e.KeyChar != 8)
            {
                nextCtl.Text = "";
                nextCtl.Focus();
                SendKeys.Send(e.KeyChar.ToString());
            }
        }
        if (e.KeyChar == 8 && string.IsNullOrEmpty(actCtl.Text))
        {
            if (actCtl != tex_IP1)
            {
                lastCtl.Focus();
            }
        }
        if (e.KeyChar == 13)
        {
            btn_Check_Click(sender, e);
        }
    }

    private void btn_Check_Click(object sender, EventArgs e)
    {
        IPAddress[] ipPool = Dns.GetHostEntry(Dns.GetHostName()).AddressList;
        lab_Hint.Visible = false;
        string tmpIP = null;
        //判断 文本框是否为空
        foreach (Control ip in pan_IP.Controls)
        {
            if (string.IsNullOrEmpty(ip.Text))
            {
                MessageBox.Show("第" + ip.Name.ToString().Substring(ip.Name.ToString().IndexOf("P") + 1) + "段IP为空");
                ip.Focus();
                return;
            }
            //组合 IP地址
            tmpIP += ip.Text;
            if (ip != tex_IP4)
                tmpIP += ".";
        }
        ipAddr = IPAddress.Parse(tmpIP);
        //创建 线程连接
        tCheckLink = new Thread(Link);
        tCheckLink.IsBackground = true;
        tCheckLink.Start();
    }

    private void tex_IP_TextChanged(object sender, EventArgs e)
    {
        btn_Transmit.Enabled = false;
        lab_Hint.Visible = true;
        lab_Hint.Text = "IP地址已更改,请点击Check按钮检查连接是否通畅!";
    }
}
public partial class FileTranser_Server
{
    public bool isConnected = false;
    //创建 socket
    public Socket socket_Server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    public Thread tReceive;

    public void fileReceive()
    {
        while (true)
        {
            if (isConnected)
            {
                //创建 socket
                Socket client = socket_Server.Accept();
                //初始 变量
                byte[] recvBytes = new byte[1024];
                int bytes = 0;
                int fileLength = 0;
                int receivedLength = 0;
                int fileNameLeng = 0;
                int fileExtLeng = 0;
                //接收 文件名长度
                bytes = client.Receive(recvBytes, 2, 0);
                fileNameLeng = Convert.ToInt32(Encoding.UTF8.GetString(recvBytes, 0, bytes));
                //接收 文件名
                bytes = client.Receive(recvBytes, fileNameLeng, 0);
                string fileName = Encoding.UTF8.GetString(recvBytes, 0, bytes);
                //MessageBox.Show(fileName);
                //接收 文件扩展名长度
                bytes = client.Receive(recvBytes, 1, 0);
                fileExtLeng = Convert.ToInt32(Encoding.UTF8.GetString(recvBytes, 0, bytes));
                //MessageBox.Show(fileExtLeng.ToString());
                //接收 文件扩展名
                bytes = client.Receive(recvBytes, fileExtLeng, 0);
                string fileExt = Encoding.UTF8.GetString(recvBytes, 0, bytes);
                //MessageBox.Show(fileExt);
                //接收 数据流长度
                bytes = client.Receive(recvBytes, 10, 0);
                //MessageBox.Show(Encoding.UTF8.GetString(recvBytes, 0, bytes));
                fileLength = Convert.ToInt32(Encoding.UTF8.GetString(recvBytes, 0, bytes));
                //组合 文件存放路径
                string filePath = Environment.CurrentDirectory + "\\" + fileName;
                if (fileExt != "null")
                    filePath += "." + fileExt;
                //创建 文件
                FileStream fileStream = new FileStream(filePath, FileMode.Create);
                //接收 数据流
                while (receivedLength < fileLength)
                {
                    bytes = client.Receive(recvBytes, recvBytes.Length, 0);
                    receivedLength += bytes;
                    fileStream.Write(recvBytes, 0, bytes);
                }
                //释放 数据流资源
                fileStream.Flush();
                fileStream.Close();
                //反馈 文件传输完成状态
                string reData = "File\n" + filePath.Substring(filePath.LastIndexOf("\\") + 1) + "\nTransmit success!";
                byte[] reByte = Encoding.UTF8.GetBytes(reData);
                client.Send(reByte, reByte.Length, 0);
                //释放 socket
                client.Shutdown(SocketShutdown.Both);
                client.Close();
                isConnected = false;
            }
        }
    }
}

}

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

namespace FileTransmit
{
    public partial class FileTransmit : Form
    {
        delegate void changeControlState();
        private void setControlState()
        {
            if (this.InvokeRequired)
            {
                this.Invoke(new changeControlState(setControlState));
                return;
            }
            btn_Transmit.Enabled = true;
        }

        public FileTransmit()
        {
            InitializeComponent();
            tex_IP1.Text = "192";
            tex_IP2.Text = "168";
            tex_IP3.Text = "1";
            tex_IP4.Text = "109";

            IPEndPoint hostEP_Server = new IPEndPoint(IPAddress.Any, 0368);
            fileTranser_Server.socket_Server.Bind(hostEP_Server);
            fileTranser_Server.socket_Server.Listen(5);
            //开启 线程接收数据
            fileTranser_Server.tReceive = new Thread(fileTranser_Server.fileReceive);
            fileTranser_Server.tReceive.IsBackground = true;
            fileTranser_Server.tReceive.Start();
        }

        //组合 数据包
        private byte[] CombomBinaryArray(byte[] srcArray1, byte[] srcArray2)
        {
            byte[] newArray = new byte[srcArray1.Length + srcArray2.Length];
            Array.Copy(srcArray1, 0, newArray, 0, srcArray1.Length);
            Array.Copy(srcArray2, 0, newArray, srcArray1.Length, srcArray2.Length);
            return newArray;
        }


        Thread tCheckLink;
        IPAddress ipAddr;
        IPEndPoint hostEP_Client;
        Socket socket_Client;

        FileTranser_Server fileTranser_Server = new FileTranser_Server();

        private void Link()
        {
            //判断 是否正在连接
            if (!fileTranser_Server.isConnected)
            {
                //尝试 连接远程服务器
                try
                {
                    hostEP_Client = new IPEndPoint(ipAddr, 0368);
                    socket_Client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    socket_Client.Connect(hostEP_Client);
                    fileTranser_Server.isConnected = true;
                }
                catch
                {
                    MessageBox.Show("连接失败");
                    socket_Client.Close();
                    fileTranser_Server.isConnected = false;
                    return;
                }
            }
            fileTranser_Server.isConnected = false;
            MessageBox.Show("连接成功");
            //激活 传送按钮
            setControlState();
        }

        private void Send()
        {
            //尝试 数据传送
            try
            {
                string fileExt = "null";
                //判断 连接是否中断
                if (!fileTranser_Server.isConnected)
                {
                    hostEP_Client = new IPEndPoint(ipAddr, 0368);
                    socket_Client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    socket_Client.Connect(hostEP_Client);
                    fileTranser_Server.isConnected = true;
                }
                //声明 文件信息
                byte[] fileArray;
                //获取 文件路径
                string filePath = tex_FilePath.Text.ToString();
                string fileName = filePath.Substring(filePath.LastIndexOf("\\") + 1);
                //打开 文件
                FileStream FS = File.Open(filePath, FileMode.Open);
                //获取 文件数据流
                byte[] tmpdata = new byte[FS.Length];
                FS.Read(tmpdata, 0, tmpdata.Length);
                FS.Close();
                //装填 文件扩展名
                //区分 非空扩展名
                if (fileName.LastIndexOf(".") != -1)
                    fileExt = fileName.Substring(fileName.LastIndexOf(".") + 1);
                byte[] fileExtArray = Encoding.UTF8.GetBytes(fileExt);
                fileArray = fileExtArray;
                //装填 文件扩展名长度
                byte[] fileExtLeng = Encoding.UTF8.GetBytes(fileExtArray.Length.ToString("D1"));
                fileArray = CombomBinaryArray(fileExtLeng, fileArray);
                //装填 文件名
                //区分 非空扩展名文件
                if (fileName.LastIndexOf(".") != -1)
                    fileName = fileName.Substring(0, fileName.LastIndexOf("."));
                byte[] fileNameArray = Encoding.UTF8.GetBytes(fileName);
                fileArray = CombomBinaryArray(fileNameArray, fileArray);
                //装填 文件名长度
                byte[] fileNameLeng = Encoding.UTF8.GetBytes(fileNameArray.Length.ToString("D2"));
                fileArray = CombomBinaryArray(fileNameLeng, fileArray);
                //装填 数据流长度
                byte[] fileLengArray = Encoding.UTF8.GetBytes(tmpdata.Length.ToString("D10"));
                fileArray = CombomBinaryArray(fileArray, fileLengArray);
                //组合 文件信息与文件数据流
                byte[] fileData = CombomBinaryArray(fileArray, tmpdata);
                //发送 文件包
                socket_Client.Send(fileData, fileData.Length, 0);
                //接收 反馈信息
                string recvStr = "";
                byte[] recvBytes = new byte[1024];
                int bytes = 0;
                while (true)
                {
                    if (!fileTranser_Server.isConnected)
                    {
                        bytes = socket_Client.Receive(recvBytes, recvBytes.Length, 0);
                        recvStr = Encoding.UTF8.GetString(recvBytes);
                        MessageBox.Show(recvStr);
                        //关闭 socket
                        socket_Client.Shutdown(SocketShutdown.Both);
                        socket_Client.Close();
                    }
                }
            }
            catch (Exception err)
            {

            }
        }
        private void Btn_Transmit_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(tex_FilePath.Text))
            {
                MessageBox.Show("文件路径为空");
                return;
            }
            //创建 线程进行数据传送
            Thread tTransmit = new Thread(Send);
            tTransmit.IsBackground = true;
            tTransmit.Start();
        }

        private void btn_Exit_Click(object sender, EventArgs e)
        {
            if(tCheckLink!=null)
                tCheckLink.Abort();
            if (fileTranser_Server.tReceive != null)
                fileTranser_Server.tReceive.Abort();
            fileTranser_Server.socket_Server.Dispose();
            fileTranser_Server.socket_Server.Close();
            fileTranser_Server.isConnected = true;
            this.Dispose(true);
            this.Close();
            Application.Exit();
        }

        private void btn_Select_Click(object sender, EventArgs e)
        {
            //打开 文件选择窗口
            OpenFileDialog openFile = new OpenFileDialog();
            //读取 配置文件
            string tmpPath = Environment.CurrentDirectory + "\\config.ini";
            FileStream fs = new FileStream(tmpPath, FileMode.OpenOrCreate);
            byte[] tmpStr = new byte[fs.Length];
            fs.Read(tmpStr, 0, tmpStr.Length);
            fs.Close();
            //设置 初始路径为配置文件内路径
            if (!string.IsNullOrEmpty(tmpStr.ToString()))
            {
                openFile.InitialDirectory = tmpStr.ToString();
            }
            //设置 文件选择类型
            openFile.Filter = "All files(*.*)|*.*";
            openFile.FilterIndex = 1;
            openFile.RestoreDirectory = false;
            if (openFile.ShowDialog() == DialogResult.OK)
            {
                //显示 所选路径
                tex_FilePath.Text = openFile.FileName;
                //记录 所选路径于配置文件
                fs = new FileStream(tmpPath, FileMode.Open);
                fs.Write(Encoding.UTF8.GetBytes(openFile.FileName), 0, openFile.FileName.Length);
                fs.Close();
            }
        }

        private void onKeyPress(object sender, KeyPressEventArgs e)
        {
            Control actCtl = this.ActiveControl;
            Control nextCtl = this.GetNextControl(actCtl, true);
            Control lastCtl = this.GetNextControl(actCtl, false);
            //控制 输入字符
            if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8)
            {
                e.Handled = true;
            }
            //自动 换栏
            if (actCtl != tex_IP4)
            {
                if (e.KeyChar == '.')
                {
                    nextCtl.Focus();
                    return;
                }
                if (actCtl.Text.Length == 3 && e.KeyChar != 8)
                {
                    nextCtl.Text = "";
                    nextCtl.Focus();
                    SendKeys.Send(e.KeyChar.ToString());
                }
            }
            if (e.KeyChar == 8 && string.IsNullOrEmpty(actCtl.Text))
            {
                if (actCtl != tex_IP1)
                {
                    lastCtl.Focus();
                }
            }
            if (e.KeyChar == 13)
            {
                btn_Check_Click(sender, e);
            }
        }

        private void btn_Check_Click(object sender, EventArgs e)
        {
            IPAddress[] ipPool = Dns.GetHostEntry(Dns.GetHostName()).AddressList;
            lab_Hint.Visible = false;
            string tmpIP = null;
            //判断 文本框是否为空
            foreach (Control ip in pan_IP.Controls)
            {
                if (string.IsNullOrEmpty(ip.Text))
                {
                    MessageBox.Show("第" + ip.Name.ToString().Substring(ip.Name.ToString().IndexOf("P") + 1) + "段IP为空");
                    ip.Focus();
                    return;
                }
                //组合 IP地址
                tmpIP += ip.Text;
                if (ip != tex_IP4)
                    tmpIP += ".";
            }
            ipAddr = IPAddress.Parse(tmpIP);
            //创建 线程连接
            tCheckLink = new Thread(Link);
            tCheckLink.IsBackground = true;
            tCheckLink.Start();
        }

        private void tex_IP_TextChanged(object sender, EventArgs e)
        {
            btn_Transmit.Enabled = false;
            lab_Hint.Visible = true;
            lab_Hint.Text = "IP地址已更改,请点击Check按钮检查连接是否通畅!";
        }
    }
    public partial class FileTranser_Server
    {
        public bool isConnected = false;
        //创建 socket
        public Socket socket_Server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        public Thread tReceive;

        public void fileReceive()
        {
            while (true)
            {
                if (isConnected)
                {
                    //创建 socket
                    Socket client = socket_Server.Accept();
                    //初始 变量
                    byte[] recvBytes = new byte[1024];
                    int bytes = 0;
                    int fileLength = 0;
                    int receivedLength = 0;
                    int fileNameLeng = 0;
                    int fileExtLeng = 0;
                    //接收 文件名长度
                    bytes = client.Receive(recvBytes, 2, 0);
                    fileNameLeng = Convert.ToInt32(Encoding.UTF8.GetString(recvBytes, 0, bytes));
                    //接收 文件名
                    bytes = client.Receive(recvBytes, fileNameLeng, 0);
                    string fileName = Encoding.UTF8.GetString(recvBytes, 0, bytes);
                    //MessageBox.Show(fileName);
                    //接收 文件扩展名长度
                    bytes = client.Receive(recvBytes, 1, 0);
                    fileExtLeng = Convert.ToInt32(Encoding.UTF8.GetString(recvBytes, 0, bytes));
                    //MessageBox.Show(fileExtLeng.ToString());
                    //接收 文件扩展名
                    bytes = client.Receive(recvBytes, fileExtLeng, 0);
                    string fileExt = Encoding.UTF8.GetString(recvBytes, 0, bytes);
                    //MessageBox.Show(fileExt);
                    //接收 数据流长度
                    bytes = client.Receive(recvBytes, 10, 0);
                    //MessageBox.Show(Encoding.UTF8.GetString(recvBytes, 0, bytes));
                    fileLength = Convert.ToInt32(Encoding.UTF8.GetString(recvBytes, 0, bytes));
                    //组合 文件存放路径
                    string filePath = Environment.CurrentDirectory + "\\" + fileName;
                    if (fileExt != "null")
                        filePath += "." + fileExt;
                    //创建 文件
                    FileStream fileStream = new FileStream(filePath, FileMode.Create);
                    //接收 数据流
                    while (receivedLength < fileLength)
                    {
                        bytes = client.Receive(recvBytes, recvBytes.Length, 0);
                        receivedLength += bytes;
                        fileStream.Write(recvBytes, 0, bytes);
                    }
                    //释放 数据流资源
                    fileStream.Flush();
                    fileStream.Close();
                    //反馈 文件传输完成状态
                    string reData = "File\n" + filePath.Substring(filePath.LastIndexOf("\\") + 1) + "\nTransmit success!";
                    byte[] reByte = Encoding.UTF8.GetBytes(reData);
                    client.Send(reByte, reByte.Length, 0);
                    //释放 socket
                    client.Shutdown(SocketShutdown.Both);
                    client.Close();
                    isConnected = false;
                }
            }
        }
    }
}