線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1524
推到 Plurk!
推到 Facebook!

請教您關於SocketServer->ClientRead event 同時觸發的問題.

 
davidsun
初階會員


發表:57
回覆:71
積分:25
註冊:2002-04-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-06-28 19:16:09 IP:61.222.xxx.xxx 未訂閱
大家好, 在下在使用 Delphi 的 TSocketServer 寫 TCP Server 程式時,有一點問題想請教,一般如果收到 Client 的資料,會觸發 Server 的 ClientRead event . 其中我們就可以根據 Client 送回的資料或者溝通好的命令來做一些處理,但是在尚未處理完成前,如果有另一個 Client 也送出資料,也觸發了 ClientRead Event ,但是之前的 Event 尚未處理完,那這樣是不是會出問題呢?如果是,該要如何避免呢?謝謝您的指教
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-06-28 21:36:07 IP:192.168.xxx.xxx 未訂閱
引言: 大家好, 在下在使用 Delphi 的 TSocketServer 寫 TCP Server 程式時,有一點問題想請教,一般如果收到 Client 的資料,會觸發 Server 的 ClientRead event . 其中我們就可以根據 Client 送回的資料或者溝通好的命令來做一些處理,但是在尚未處理完成前,如果有另一個 Client 也送出資料,也觸發了 ClientRead Event ,但是之前的 Event 尚未處理完,那這樣是不是會出問題呢?如果是,該要如何避免呢?謝謝您的指教
會出問題! 您必需在onClientRead 的事件中,將資料存入Queue中, 另外由Timer去一一讀出處理! 這樣懂嗎? ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
davidsun
初階會員


發表:57
回覆:71
積分:25
註冊:2002-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-06-29 18:24:36 IP:61.230.xxx.xxx 未訂閱
引言:
引言: 大家好, 在下在使用 Delphi 的 TSocketServer 寫 TCP Server 程式時,有一點問題想請教,一般如果收到 Client 的資料,會觸發 Server 的 ClientRead event . 其中我們就可以根據 Client 送回的資料或者溝通好的命令來做一些處理,但是在尚未處理完成前,如果有另一個 Client 也送出資料,也觸發了 ClientRead Event ,但是之前的 Event 尚未處理完,那這樣是不是會出問題呢?如果是,該要如何避免呢?謝謝您的指教
會出問題! 您必需在onClientRead 的事件中,將資料存入Queue中, 另外由Timer去一一讀出處理! 這樣懂嗎? ~~~Delphi K.Top討論區站長~~~
的確會出問題,我在想,如果我用 Thread 的方式,每一個 Client 的 Connection 都有自己的 Thread ,是不是就可以避免這樣的問題呢?因為 Delph 的 TSocketServer 的 Type ,內定值是 NonBlock,也就是所有的 Client 都共用一個 Thread,如果用 ThreadBlock ,就是每一個 Client 都有自己的 Thread,但是向這樣的應用範例,似乎是很難找到,內附的 Demo 相單簡單,請問我如何或者在何處可以找到更進一步的資料呢?謝謝您。
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-06-29 18:36:35 IP:192.168.xxx.xxx 未訂閱
引言: 的確會出問題,我在想,如果我用 Thread 的方式,每一個 Client 的 Connection 都有自己的 Thread ,是不是就可以避免這樣的問題呢?因為 Delph 的 TSocketServer 的 Type ,內定值是 NonBlock,也就是所有的 Client 都共用一個 Thread,如果用 ThreadBlock ,就是每一個 Client 都有自己的 Thread,但是向這樣的應用範例,似乎是很難找到,內附的 Demo 相單簡單,請問我如何或者在何處可以找到更進一步的資料呢?謝謝您。
Thread應是很好的解決辦法,您可先參考本站的Thread範例! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
天外來客
初階會員


發表:22
回覆:199
積分:44
註冊:2001-11-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-07-01 06:09:18 IP:61.13.xxx.xxx 未訂閱
可以試著將client 及 server 均設為 blocking 的方式 或許可以解決您的問題
monkey66
一般會員


發表:1
回覆:6
積分:6
註冊:2002-06-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-07-01 10:55:00 IP:211.73.xxx.xxx 未訂閱
引言: 可以試著將client 及 server 均設為 blocking 的方式 或許可以解決您的問題
我很早以前試過,沒碰到過問題。
crazyhuman
一般會員


發表:13
回覆:13
積分:5
註冊:2003-03-20

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-22 16:09:31 IP:203.70.xxx.xxx 未訂閱
可是設成blocking,資料並不會立即傳送..............
系統時間:2024-05-01 20:49:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!