簡體   English   中英

客戶端服務器取消過程

[英]Client Server Cancel Process

我正在通過一個簡單的客戶端-服務器示例來熟悉套接字和多線程。 我在客戶端有一個簡單的GUI,帶有兩個按鈕-第一個按鈕生成一個n位大小的素數,第二個按鈕取消第一個按鈕的操作(因為使8000位素數需要一些時間)。

當用戶按下“生成”時,客戶端將創建一個新線程。 該線程創建兩個新線程,一個用於建立與服務器的連接,另一個不執行任何操作,除非GUI請求“停止生成素數”。

服務器只是輪詢連接。 建立連接后,它將創建一個新線程來生成素數,然后將該素數返回給客戶端。

這是我遇到的概念問題。 如果我想在客戶端上實施“停止生成主要”按鈕,該怎么辦? 我最初的想法是使用第二個線程使用相同的套接字連接到服務器,並告訴它“停止”。 如何使服務器對客戶端請求擁有所有權感? 我如何讓服務器說“好,客戶端A,我當前正在運行一個線程來創建大型素數,但是現在我看到您正在請求取消。” 如何賦予服務器對請求的所有權感?

一種開始的方法是為客戶端服務器通信設置自己的請求和響應消息。 因為到服務器的每個新連接請求都會在服務器站點上創建/使用專用線程,所以您可以繼續與服務器通信,直到計算出質數為止,並且如果用戶單擊“停止”按鈕,則傳遞STOP信號。 下面是高層次的方法,您可以繼續進行實施。

T1-線程1

客戶

  • T1(用於具有兩個按鈕的UI)在“開始”按鈕上->調用ServerSocket並傳遞消息“ START PRIME n”在“停止”按鈕上->調用ServerSocket並傳遞消息“ STOP PRIME n”

     Request Messages i. START PRIME n ii. STOP PRIME n 

服務器

  • 端口5000上的T1(偵聽客戶端請求)應客戶端請求:

    1. 從線程池示例章節分配新線程

       Response Messages i. PRIME VAL <result> ii. STOP PRIME COMPLETE 
    2. 線程T1返回監聽

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM