从服务器向客户端线程发送文件

时间:2016-01-04 19:06:36

标签: multithreading visual-studio c++-cli

我有两个程序,一个用于客户端,一个用于服务器。他们可以使用Threads通过聊天互相交谈。

我添加了两个按钮,一个用于客户端,另一个用于服务器从服务器向客户端发送文件。

当我将客户端连接到服务器时,我启动了线程,它等待接收具有recv()功能的东西。

问题在于,当我想将文件发送到客户端因为线程处于唤醒状态时传输不起作用。

当我不使用线程时,传输工作正常。 我的问题是:我可以通过单击按钮来停止该线程吗?

PS:我是Threads的初学者

这是我使用Threads的代码:

    delegate System::Void PrintStringDel(String^ str);

        void PrintString(String^ str) {
            txtReceive->Text += str;
            txtReceive->SelectionStart = txtReceive->Text->Length;
            txtReceive->ScrollToCaret();
        }
void ReceiveThread() {
         int ByteReceived;
        char buff[1024];

        while(true) {
           ByteReceived = recv(SendingSocket, buff, sizeof(buff), 0);

           if(ByteReceived > 0) {
                PrintStringDel^ print = gcnew PrintStringDel(this, &Form1::PrintString);
                String^ text = gcnew String(buff);
                txtReceive->BeginInvoke(print, text);
           }
        }
    }

在Connect()客户端

        ...
Threading::ThreadStart^ ts = gcnew Threading::ThreadStart(this,
                                           &Form1::ReceiveThread);
        Threading::Thread^ t = gcnew Threading::Thread(ts);
        t->Start();

0 个答案:

没有答案