在不同的线程上发送多个文件套接字c#

时间:2017-01-27 11:53:23

标签: c# multithreading sockets

我正在开发一种在不同计算机之间传输多个文件的软件,但我遇到了并发问题。当两个线程都使用Task.Run()开始发送时,字节在接收端嘟嘟嘟嘟,即数据冲突在一起。我已经尝试锁定我的代码的每个可能部分,可能导致错误都无济于事。这是我的代码的一部分。

//异步传输的代码

    public void StartTransferAsync(Socket socket)
    {

            Task.Factory.StartNew(() =>
            {
                lock (this)
                {
                    uploader = new Uploader(this, socket);
                    uploader.Upload();
                }
            });

    }

//接收来自

的异步文件的代码
public byte[] DownloadData()
    {


            int total = 0;
            int recv = 0;
            int size = 0;
            int dataleft = 0;
            byte[] data;

            byte[] dataSize = new byte[4];
            recv = socket.Receive(dataSize, 0, 4, 0);

            size = BitConverter.ToInt32(dataSize, 0);
        Console.WriteLine($"Size received: {size}");
            if (size > 100038)
            {
                Console.WriteLine("Shii here");
            }

            dataleft = size;
            data = new byte[size];

            while (total < size)
            {
                recv = socket.Receive(data, total, dataleft, 0);
                total += recv;
                dataleft -= recv;
            }
            return data; 


    }

请帮助我真的需要这个。

0 个答案:

没有答案