Additions:
=====Network 网络编程=====
现在有一个client要对多个slave发送UDP请求,并且需要确保有response返回。
我的设计如下:
1) 设计一个线程安全的FIFO的sendQueue, 作为待发送的消息队列。然后维护一个队列sendMsg作为已发送的消息队列。
1) 当len(Queue)>0 ,就循环pop出message, 赋以流水号sequence, 然后send出去, 并且以sequence为索引将message存入sendMsg队列.
1) 当sendMsg队列的每个项包括 sequence, message, count(该消息已经重发的次数)。
1) 启动一个单独的进程,对sendMsg作轮询, 若count < MaxReSendTime , 则将message send,并且count++; 若count >= MaxReSendTime, 则消息发送失败,作失败处理.
现在有一个client要对多个slave发送UDP请求,并且需要确保有response返回。
我的设计如下:
1) 设计一个线程安全的FIFO的sendQueue, 作为待发送的消息队列。然后维护一个队列sendMsg作为已发送的消息队列。
1) 当len(Queue)>0 ,就循环pop出message, 赋以流水号sequence, 然后send出去, 并且以sequence为索引将message存入sendMsg队列.
1) 当sendMsg队列的每个项包括 sequence, message, count(该消息已经重发的次数)。
1) 启动一个单独的进程,对sendMsg作轮询, 若count < MaxReSendTime , 则将message send,并且count++; 若count >= MaxReSendTime, 则消息发送失败,作失败处理.
Deletions:
ç°å¨æä¸ä¸ªclientè¦å¯¹å¤ä¸ªslaveåéUDP请æ±ï¼å¹¶ä¸éè¦ç¡®ä¿æresponseè¿åã
æç设计å¦ä¸ï¼
1) 设计ä¸ä¸ªçº¿ç¨å®å ¨çFIFOçsendQueue, ä½ä¸ºå¾ åéçæ¶æ¯éåãç¶åç»´æ¤ä¸ä¸ªéåsendMsgä½ä¸ºå·²åéçæ¶æ¯éåã
1) å½len(Queue)>0 ,就循ç¯popåºmessage, èµä»¥æµæ°´å·sequence, ç¶åsendåºå», å¹¶ä¸ä»¥sequence为索å¼å°messageåå ¥sendMsgéå.
1) å½sendMsgéåçæ¯ä¸ªé¡¹å æ¬ sequence, message, count(è¯¥æ¶æ¯å·²ç»éåçæ¬¡æ°)ã
1) å¯å¨ä¸ä¸ªåç¬çè¿ç¨ï¼å¯¹sendMsgä½è½®è¯¢, è¥count < MaxReSendTime , åå°message sendï¼å¹¶ä¸count++; è¥count >= MaxReSendTime, åæ¶æ¯åé失败ï¼ä½å¤±è´¥å¤ç.
Deletions:
http://rellatr.com/moncaallibas.html[tacrelrelo] [[http://rellatr.com/moncaallibas.html][tacrelrelo]]
* http://acelerboer.com/relactr.html tacrelrelo
* [[http://nodelbovarbo.com/viletoraclat.html tacrelrelo]]
* [[http://sitell.com/varcbasoura.html|tacrelrelo]]
* [[http://ricbastr.com/paslacnaac.html | tacrelrelo]]
* [http://cliricca.com/notrocdom.html|tacrelrelo]
* [tacrelrelo|http://c4tolocna.com/elelttrdell.html]
* ((http://rictro.com/orvarcovi.html tacrelrelo))
* [tacrelrelo](http://relmond.com/moncaoure.html "tacrelrelo")
"tacrelrelo":http://domchialerb.com/cagetcn.html
Additions:
* [http://dommonliacel.com/ricrom.html tacrelrelo]
http://rellatr.com/moncaallibas.html[tacrelrelo] [[http://rellatr.com/moncaallibas.html][tacrelrelo]]
* http://acelerboer.com/relactr.html tacrelrelo
* [[http://nodelbovarbo.com/viletoraclat.html tacrelrelo]]
* [[http://sitell.com/varcbasoura.html|tacrelrelo]]
* [[http://ricbastr.com/paslacnaac.html | tacrelrelo]]
* [http://cliricca.com/notrocdom.html|tacrelrelo]
* [tacrelrelo|http://c4tolocna.com/elelttrdell.html]
* ((http://rictro.com/orvarcovi.html tacrelrelo))
* [tacrelrelo](http://relmond.com/moncaoure.html "tacrelrelo")
"tacrelrelo":http://domchialerb.com/cagetcn.html
=====Network ç½ç»ç¼ç¨=====
ç°å¨æä¸ä¸ªclientè¦å¯¹å¤ä¸ªslaveåéUDP请æ±ï¼å¹¶ä¸éè¦ç¡®ä¿æresponseè¿åã
æç设计å¦ä¸ï¼
1) 设计ä¸ä¸ªçº¿ç¨å®å ¨çFIFOçsendQueue, ä½ä¸ºå¾ åéçæ¶æ¯éåãç¶åç»´æ¤ä¸ä¸ªéåsendMsgä½ä¸ºå·²åéçæ¶æ¯éåã
1) å½len(Queue)>0 ,就循ç¯popåºmessage, èµä»¥æµæ°´å·sequence, ç¶åsendåºå», å¹¶ä¸ä»¥sequence为索å¼å°messageåå ¥sendMsgéå.
1) å½sendMsgéåçæ¯ä¸ªé¡¹å æ¬ sequence, message, count(è¯¥æ¶æ¯å·²ç»éåçæ¬¡æ°)ã
1) å¯å¨ä¸ä¸ªåç¬çè¿ç¨ï¼å¯¹sendMsgä½è½®è¯¢, è¥count < MaxReSendTime , åå°message sendï¼å¹¶ä¸count++; è¥count >= MaxReSendTime, åæ¶æ¯åé失败ï¼ä½å¤±è´¥å¤ç.
http://rellatr.com/moncaallibas.html[tacrelrelo] [[http://rellatr.com/moncaallibas.html][tacrelrelo]]
* http://acelerboer.com/relactr.html tacrelrelo
* [[http://nodelbovarbo.com/viletoraclat.html tacrelrelo]]
* [[http://sitell.com/varcbasoura.html|tacrelrelo]]
* [[http://ricbastr.com/paslacnaac.html | tacrelrelo]]
* [http://cliricca.com/notrocdom.html|tacrelrelo]
* [tacrelrelo|http://c4tolocna.com/elelttrdell.html]
* ((http://rictro.com/orvarcovi.html tacrelrelo))
* [tacrelrelo](http://relmond.com/moncaoure.html "tacrelrelo")
"tacrelrelo":http://domchialerb.com/cagetcn.html
=====Network ç½ç»ç¼ç¨=====
ç°å¨æä¸ä¸ªclientè¦å¯¹å¤ä¸ªslaveåéUDP请æ±ï¼å¹¶ä¸éè¦ç¡®ä¿æresponseè¿åã
æç设计å¦ä¸ï¼
1) 设计ä¸ä¸ªçº¿ç¨å®å ¨çFIFOçsendQueue, ä½ä¸ºå¾ åéçæ¶æ¯éåãç¶åç»´æ¤ä¸ä¸ªéåsendMsgä½ä¸ºå·²åéçæ¶æ¯éåã
1) å½len(Queue)>0 ,就循ç¯popåºmessage, èµä»¥æµæ°´å·sequence, ç¶åsendåºå», å¹¶ä¸ä»¥sequence为索å¼å°messageåå ¥sendMsgéå.
1) å½sendMsgéåçæ¯ä¸ªé¡¹å æ¬ sequence, message, count(è¯¥æ¶æ¯å·²ç»éåçæ¬¡æ°)ã
1) å¯å¨ä¸ä¸ªåç¬çè¿ç¨ï¼å¯¹sendMsgä½è½®è¯¢, è¥count < MaxReSendTime , åå°message sendï¼å¹¶ä¸count++; è¥count >= MaxReSendTime, åæ¶æ¯åé失败ï¼ä½å¤±è´¥å¤ç.
Deletions:
现在有一个client要对多个slave发送UDP请求,并且需要确保有response返回。
我的设计如下:
1) 设计一个线程安全的FIFO的sendQueue, 作为待发送的消息队列。然后维护一个队列sendMsg作为已发送的消息队列。
1) 当len(Queue)>0 ,就循环pop出message, 赋以流水号sequence, 然后send出去, 并且以sequence为索引将message存入sendMsg队列.
1) 当sendMsg队列的每个项包括 sequence, message, count(该消息已经重发的次数)。
1) 启动一个单独的进程,对sendMsg作轮询, 若count < MaxReSendTime , 则将message send,并且count++; 若count >= MaxReSendTime, 则消息发送失败,作失败处理.
Revision [456]
Edited on 2009-05-22 08:05:56 by BuddieFive [Reverting last edit by RacccLetob [452] to previous version [381]]Additions:
=====Network 网络编程=====
现在有一个client要对多个slave发送UDP请求,并且需要确保有response返回。
我的设计如下:
1) 设计一个线程安全的FIFO的sendQueue, 作为待发送的消息队列。然后维护一个队列sendMsg作为已发送的消息队列。
1) 当len(Queue)>0 ,就循环pop出message, 赋以流水号sequence, 然后send出去, 并且以sequence为索引将message存入sendMsg队列.
1) 当sendMsg队列的每个项包括 sequence, message, count(该消息已经重发的次数)。
1) 启动一个单独的进程,对sendMsg作轮询, 若count < MaxReSendTime , 则将message send,并且count++; 若count >= MaxReSendTime, 则消息发送失败,作失败处理.
现在有一个client要对多个slave发送UDP请求,并且需要确保有response返回。
我的设计如下:
1) 设计一个线程安全的FIFO的sendQueue, 作为待发送的消息队列。然后维护一个队列sendMsg作为已发送的消息队列。
1) 当len(Queue)>0 ,就循环pop出message, 赋以流水号sequence, 然后send出去, 并且以sequence为索引将message存入sendMsg队列.
1) 当sendMsg队列的每个项包括 sequence, message, count(该消息已经重发的次数)。
1) 启动一个单独的进程,对sendMsg作轮询, 若count < MaxReSendTime , 则将message send,并且count++; 若count >= MaxReSendTime, 则消息发送失败,作失败处理.
Deletions:
=====Network ç½ç»ç¼ç¨=====
ç°å¨æä¸ä¸ªclientè¦å¯¹å¤ä¸ªslaveåéUDP请æ±ï¼å¹¶ä¸éè¦ç¡®ä¿æresponseè¿åã
æç设计å¦ä¸ï¼
1) 设计ä¸ä¸ªçº¿ç¨å®å ¨çFIFOçsendQueue, ä½ä¸ºå¾ åéçæ¶æ¯éåãç¶åç»´æ¤ä¸ä¸ªéåsendMsgä½ä¸ºå·²åéçæ¶æ¯éåã
1) å½len(Queue)>0 ,就循ç¯popåºmessage, èµä»¥æµæ°´å·sequence, ç¶åsendåºå», å¹¶ä¸ä»¥sequence为索å¼å°messageåå ¥sendMsgéå.
1) å½sendMsgéåçæ¯ä¸ªé¡¹å æ¬ sequence, message, count(è¯¥æ¶æ¯å·²ç»éåçæ¬¡æ°)ã
1) å¯å¨ä¸ä¸ªåç¬çè¿ç¨ï¼å¯¹sendMsgä½è½®è¯¢, è¥count < MaxReSendTime , åå°message sendï¼å¹¶ä¸count++; è¥count >= MaxReSendTime, åæ¶æ¯åé失败ï¼ä½å¤±è´¥å¤ç.
Additions:
http://www.texttatrocerracc.com
=====Network ç½ç»ç¼ç¨=====
ç°å¨æä¸ä¸ªclientè¦å¯¹å¤ä¸ªslaveåéUDP请æ±ï¼å¹¶ä¸éè¦ç¡®ä¿æresponseè¿åã
æç设计å¦ä¸ï¼
1) 设计ä¸ä¸ªçº¿ç¨å®å ¨çFIFOçsendQueue, ä½ä¸ºå¾ åéçæ¶æ¯éåãç¶åç»´æ¤ä¸ä¸ªéåsendMsgä½ä¸ºå·²åéçæ¶æ¯éåã
1) å½len(Queue)>0 ,就循ç¯popåºmessage, èµä»¥æµæ°´å·sequence, ç¶åsendåºå», å¹¶ä¸ä»¥sequence为索å¼å°messageåå ¥sendMsgéå.
1) å½sendMsgéåçæ¯ä¸ªé¡¹å æ¬ sequence, message, count(è¯¥æ¶æ¯å·²ç»éåçæ¬¡æ°)ã
1) å¯å¨ä¸ä¸ªåç¬çè¿ç¨ï¼å¯¹sendMsgä½è½®è¯¢, è¥count < MaxReSendTime , åå°message sendï¼å¹¶ä¸count++; è¥count >= MaxReSendTime, åæ¶æ¯åé失败ï¼ä½å¤±è´¥å¤ç.
=====Network ç½ç»ç¼ç¨=====
ç°å¨æä¸ä¸ªclientè¦å¯¹å¤ä¸ªslaveåéUDP请æ±ï¼å¹¶ä¸éè¦ç¡®ä¿æresponseè¿åã
æç设计å¦ä¸ï¼
1) 设计ä¸ä¸ªçº¿ç¨å®å ¨çFIFOçsendQueue, ä½ä¸ºå¾ åéçæ¶æ¯éåãç¶åç»´æ¤ä¸ä¸ªéåsendMsgä½ä¸ºå·²åéçæ¶æ¯éåã
1) å½len(Queue)>0 ,就循ç¯popåºmessage, èµä»¥æµæ°´å·sequence, ç¶åsendåºå», å¹¶ä¸ä»¥sequence为索å¼å°messageåå ¥sendMsgéå.
1) å½sendMsgéåçæ¯ä¸ªé¡¹å æ¬ sequence, message, count(è¯¥æ¶æ¯å·²ç»éåçæ¬¡æ°)ã
1) å¯å¨ä¸ä¸ªåç¬çè¿ç¨ï¼å¯¹sendMsgä½è½®è¯¢, è¥count < MaxReSendTime , åå°message sendï¼å¹¶ä¸count++; è¥count >= MaxReSendTime, åæ¶æ¯åé失败ï¼ä½å¤±è´¥å¤ç.
Deletions:
现在有一个client要对多个slave发送UDP请求,并且需要确保有response返回。
我的设计如下:
1) 设计一个线程安全的FIFO的sendQueue, 作为待发送的消息队列。然后维护一个队列sendMsg作为已发送的消息队列。
1) 当len(Queue)>0 ,就循环pop出message, 赋以流水号sequence, 然后send出去, 并且以sequence为索引将message存入sendMsg队列.
1) 当sendMsg队列的每个项包括 sequence, message, count(该消息已经重发的次数)。
1) 启动一个单独的进程,对sendMsg作轮询, 若count < MaxReSendTime , 则将message send,并且count++; 若count >= MaxReSendTime, 则消息发送失败,作失败处理.
Additions:
=====Network 网络编程=====
现在有一个client要对多个slave发送UDP请求,并且需要确保有response返回。
我的设计如下:
1) 设计一个线程安全的FIFO的sendQueue, 作为待发送的消息队列。然后维护一个队列sendMsg作为已发送的消息队列。
1) 当len(Queue)>0 ,就循环pop出message, 赋以流水号sequence, 然后send出去, 并且以sequence为索引将message存入sendMsg队列.
1) 当sendMsg队列的每个项包括 sequence, message, count(该消息已经重发的次数)。
1) 启动一个单独的进程,对sendMsg作轮询, 若count < MaxReSendTime , 则将message send,并且count++; 若count >= MaxReSendTime, 则消息发送失败,作失败处理.
现在有一个client要对多个slave发送UDP请求,并且需要确保有response返回。
我的设计如下:
1) 设计一个线程安全的FIFO的sendQueue, 作为待发送的消息队列。然后维护一个队列sendMsg作为已发送的消息队列。
1) 当len(Queue)>0 ,就循环pop出message, 赋以流水号sequence, 然后send出去, 并且以sequence为索引将message存入sendMsg队列.
1) 当sendMsg队列的每个项包括 sequence, message, count(该消息已经重发的次数)。
1) 启动一个单独的进程,对sendMsg作轮询, 若count < MaxReSendTime , 则将message send,并且count++; 若count >= MaxReSendTime, 则消息发送失败,作失败处理.
Deletions:
=====Network ç½ç»ç¼ç¨=====
ç°å¨æä¸ä¸ªclientè¦å¯¹å¤ä¸ªslaveåéUDP请æ±ï¼å¹¶ä¸éè¦ç¡®ä¿æresponseè¿åã
æç设计å¦ä¸ï¼
1) 设计ä¸ä¸ªçº¿ç¨å®å ¨çFIFOçsendQueue, ä½ä¸ºå¾ åéçæ¶æ¯éåãç¶åç»´æ¤ä¸ä¸ªéåsendMsgä½ä¸ºå·²åéçæ¶æ¯éåã
1) å½len(Queue)>0 ,就循ç¯popåºmessage, èµä»¥æµæ°´å·sequence, ç¶åsendåºå», å¹¶ä¸ä»¥sequence为索å¼å°messageåå ¥sendMsgéå.
1) å½sendMsgéåçæ¯ä¸ªé¡¹å æ¬ sequence, message, count(è¯¥æ¶æ¯å·²ç»éåçæ¬¡æ°)ã
1) å¯å¨ä¸ä¸ªåç¬çè¿ç¨ï¼å¯¹sendMsgä½è½®è¯¢, è¥count < MaxReSendTime , åå°message sendï¼å¹¶ä¸count++; è¥count >= MaxReSendTime, åæ¶æ¯åé失败ï¼ä½å¤±è´¥å¤ç.
Additions:
cacaracrac
=====Network ç½ç»ç¼ç¨=====
ç°å¨æä¸ä¸ªclientè¦å¯¹å¤ä¸ªslaveåéUDP请æ±ï¼å¹¶ä¸éè¦ç¡®ä¿æresponseè¿åã
æç设计å¦ä¸ï¼
1) 设计ä¸ä¸ªçº¿ç¨å®å ¨çFIFOçsendQueue, ä½ä¸ºå¾ åéçæ¶æ¯éåãç¶åç»´æ¤ä¸ä¸ªéåsendMsgä½ä¸ºå·²åéçæ¶æ¯éåã
1) å½len(Queue)>0 ,就循ç¯popåºmessage, èµä»¥æµæ°´å·sequence, ç¶åsendåºå», å¹¶ä¸ä»¥sequence为索å¼å°messageåå ¥sendMsgéå.
1) å½sendMsgéåçæ¯ä¸ªé¡¹å æ¬ sequence, message, count(è¯¥æ¶æ¯å·²ç»éåçæ¬¡æ°)ã
1) å¯å¨ä¸ä¸ªåç¬çè¿ç¨ï¼å¯¹sendMsgä½è½®è¯¢, è¥count < MaxReSendTime , åå°message sendï¼å¹¶ä¸count++; è¥count >= MaxReSendTime, åæ¶æ¯åé失败ï¼ä½å¤±è´¥å¤ç.
=====Network ç½ç»ç¼ç¨=====
ç°å¨æä¸ä¸ªclientè¦å¯¹å¤ä¸ªslaveåéUDP请æ±ï¼å¹¶ä¸éè¦ç¡®ä¿æresponseè¿åã
æç设计å¦ä¸ï¼
1) 设计ä¸ä¸ªçº¿ç¨å®å ¨çFIFOçsendQueue, ä½ä¸ºå¾ åéçæ¶æ¯éåãç¶åç»´æ¤ä¸ä¸ªéåsendMsgä½ä¸ºå·²åéçæ¶æ¯éåã
1) å½len(Queue)>0 ,就循ç¯popåºmessage, èµä»¥æµæ°´å·sequence, ç¶åsendåºå», å¹¶ä¸ä»¥sequence为索å¼å°messageåå ¥sendMsgéå.
1) å½sendMsgéåçæ¯ä¸ªé¡¹å æ¬ sequence, message, count(è¯¥æ¶æ¯å·²ç»éåçæ¬¡æ°)ã
1) å¯å¨ä¸ä¸ªåç¬çè¿ç¨ï¼å¯¹sendMsgä½è½®è¯¢, è¥count < MaxReSendTime , åå°message sendï¼å¹¶ä¸count++; è¥count >= MaxReSendTime, åæ¶æ¯åé失败ï¼ä½å¤±è´¥å¤ç.
Deletions:
现在有一个client要对多个slave发送UDP请求,并且需要确保有response返回。
我的设计如下:
1) 设计一个线程安全的FIFO的sendQueue, 作为待发送的消息队列。然后维护一个队列sendMsg作为已发送的消息队列。
1) 当len(Queue)>0 ,就循环pop出message, 赋以流水号sequence, 然后send出去, 并且以sequence为索引将message存入sendMsg队列.
1) 当sendMsg队列的每个项包括 sequence, message, count(该消息已经重发的次数)。
1) 启动一个单独的进程,对sendMsg作轮询, 若count < MaxReSendTime , 则将message send,并且count++; 若count >= MaxReSendTime, 则消息发送失败,作失败处理.
Additions:
=====Network 网络编程=====
现在有一个client要对多个slave发送UDP请求,并且需要确保有response返回。
我的设计如下:
1) 设计一个线程安全的FIFO的sendQueue, 作为待发送的消息队列。然后维护一个队列sendMsg作为已发送的消息队列。
1) 当len(Queue)>0 ,就循环pop出message, 赋以流水号sequence, 然后send出去, 并且以sequence为索引将message存入sendMsg队列.
1) 当sendMsg队列的每个项包括 sequence, message, count(该消息已经重发的次数)。
1) 启动一个单独的进程,对sendMsg作轮询, 若count < MaxReSendTime , 则将message send,并且count++; 若count >= MaxReSendTime, 则消息发送失败,作失败处理.
现在有一个client要对多个slave发送UDP请求,并且需要确保有response返回。
我的设计如下:
1) 设计一个线程安全的FIFO的sendQueue, 作为待发送的消息队列。然后维护一个队列sendMsg作为已发送的消息队列。
1) 当len(Queue)>0 ,就循环pop出message, 赋以流水号sequence, 然后send出去, 并且以sequence为索引将message存入sendMsg队列.
1) 当sendMsg队列的每个项包括 sequence, message, count(该消息已经重发的次数)。
1) 启动一个单独的进程,对sendMsg作轮询, 若count < MaxReSendTime , 则将message send,并且count++; 若count >= MaxReSendTime, 则消息发送失败,作失败处理.
Deletions:
=====Network ç½ç»ç¼ç¨=====
ç°å¨æä¸ä¸ªclientè¦å¯¹å¤ä¸ªslaveåéUDP请æ±ï¼å¹¶ä¸éè¦ç¡®ä¿æresponseè¿åã
æç设计å¦ä¸ï¼
1) 设计ä¸ä¸ªçº¿ç¨å®å ¨çFIFOçsendQueue, ä½ä¸ºå¾ åéçæ¶æ¯éåãç¶åç»´æ¤ä¸ä¸ªéåsendMsgä½ä¸ºå·²åéçæ¶æ¯éåã
1) å½len(Queue)>0 ,就循ç¯popåºmessage, èµä»¥æµæ°´å·sequence, ç¶åsendåºå», å¹¶ä¸ä»¥sequence为索å¼å°messageåå ¥sendMsgéå.
1) å½sendMsgéåçæ¯ä¸ªé¡¹å æ¬ sequence, message, count(è¯¥æ¶æ¯å·²ç»éåçæ¬¡æ°)ã
1) å¯å¨ä¸ä¸ªåç¬çè¿ç¨ï¼å¯¹sendMsgä½è½®è¯¢, è¥count < MaxReSendTime , åå°message sendï¼å¹¶ä¸count++; è¥count >= MaxReSendTime, åæ¶æ¯åé失败ï¼ä½å¤±è´¥å¤ç.
Additions:
erbocd
=====Network ç½ç»ç¼ç¨=====
ç°å¨æä¸ä¸ªclientè¦å¯¹å¤ä¸ªslaveåéUDP请æ±ï¼å¹¶ä¸éè¦ç¡®ä¿æresponseè¿åã
æç设计å¦ä¸ï¼
1) 设计ä¸ä¸ªçº¿ç¨å®å ¨çFIFOçsendQueue, ä½ä¸ºå¾ åéçæ¶æ¯éåãç¶åç»´æ¤ä¸ä¸ªéåsendMsgä½ä¸ºå·²åéçæ¶æ¯éåã
1) å½len(Queue)>0 ,就循ç¯popåºmessage, èµä»¥æµæ°´å·sequence, ç¶åsendåºå», å¹¶ä¸ä»¥sequence为索å¼å°messageåå ¥sendMsgéå.
1) å½sendMsgéåçæ¯ä¸ªé¡¹å æ¬ sequence, message, count(è¯¥æ¶æ¯å·²ç»éåçæ¬¡æ°)ã
1) å¯å¨ä¸ä¸ªåç¬çè¿ç¨ï¼å¯¹sendMsgä½è½®è¯¢, è¥count < MaxReSendTime , åå°message sendï¼å¹¶ä¸count++; è¥count >= MaxReSendTime, åæ¶æ¯åé失败ï¼ä½å¤±è´¥å¤ç.
=====Network ç½ç»ç¼ç¨=====
ç°å¨æä¸ä¸ªclientè¦å¯¹å¤ä¸ªslaveåéUDP请æ±ï¼å¹¶ä¸éè¦ç¡®ä¿æresponseè¿åã
æç设计å¦ä¸ï¼
1) 设计ä¸ä¸ªçº¿ç¨å®å ¨çFIFOçsendQueue, ä½ä¸ºå¾ åéçæ¶æ¯éåãç¶åç»´æ¤ä¸ä¸ªéåsendMsgä½ä¸ºå·²åéçæ¶æ¯éåã
1) å½len(Queue)>0 ,就循ç¯popåºmessage, èµä»¥æµæ°´å·sequence, ç¶åsendåºå», å¹¶ä¸ä»¥sequence为索å¼å°messageåå ¥sendMsgéå.
1) å½sendMsgéåçæ¯ä¸ªé¡¹å æ¬ sequence, message, count(è¯¥æ¶æ¯å·²ç»éåçæ¬¡æ°)ã
1) å¯å¨ä¸ä¸ªåç¬çè¿ç¨ï¼å¯¹sendMsgä½è½®è¯¢, è¥count < MaxReSendTime , åå°message sendï¼å¹¶ä¸count++; è¥count >= MaxReSendTime, åæ¶æ¯åé失败ï¼ä½å¤±è´¥å¤ç.
Deletions:
现在有一个client要对多个slave发送UDP请求,并且需要确保有response返回。
我的设计如下:
1) 设计一个线程安全的FIFO的sendQueue, 作为待发送的消息队列。然后维护一个队列sendMsg作为已发送的消息队列。
1) 当len(Queue)>0 ,就循环pop出message, 赋以流水号sequence, 然后send出去, 并且以sequence为索引将message存入sendMsg队列.
1) 当sendMsg队列的每个项包括 sequence, message, count(该消息已经重发的次数)。
1) 启动一个单独的进程,对sendMsg作轮询, 若count < MaxReSendTime , 则将message send,并且count++; 若count >= MaxReSendTime, 则消息发送失败,作失败处理.
Additions:
=== Add Reliability to UDP Application ===
现在有一个client要对多个slave发送UDP请求,并且需要确保有response返回。
我的设计如下:
1) 设计一个线程安全的FIFO的sendQueue, 作为待发送的消息队列。然后维护一个队列sendMsg作为已发送的消息队列。
1) 当len(Queue)>0 ,就循环pop出message, 赋以流水号sequence, 然后send出去, 并且以sequence为索引将message存入sendMsg队列.
1) 当sendMsg队列的每个项包括 sequence, message, count(该消息已经重发的次数)。
1) 启动一个单独的进程,对sendMsg作轮询, 若count < MaxReSendTime , 则将message send,并且count++; 若count >= MaxReSendTime, 则消息发送失败,作失败处理.
现在有一个client要对多个slave发送UDP请求,并且需要确保有response返回。
我的设计如下:
1) 设计一个线程安全的FIFO的sendQueue, 作为待发送的消息队列。然后维护一个队列sendMsg作为已发送的消息队列。
1) 当len(Queue)>0 ,就循环pop出message, 赋以流水号sequence, 然后send出去, 并且以sequence为索引将message存入sendMsg队列.
1) 当sendMsg队列的每个项包括 sequence, message, count(该消息已经重发的次数)。
1) 启动一个单独的进程,对sendMsg作轮询, 若count < MaxReSendTime , 则将message send,并且count++; 若count >= MaxReSendTime, 则消息发送失败,作失败处理.
Deletions:
Additions:
1. Add Reliability to UDP Application