TCP_RemoteDataHandlerPassiveMode.cs 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.IO;
  5. using System.Net;
  6. using System.Net.Sockets;
  7. using System.Threading;
  8. using LYFZ.Network.EnumerateLibrary;
  9. namespace LYFZ.Network
  10. {
  11. /// <summary>
  12. /// 远程数据处理类 被动模式
  13. /// </summary>
  14. public class TCP_RemoteDataHandlerPassiveMode
  15. {
  16. #region 服务端接收到客户端指令后的处理程序
  17. public TCP_RemoteDataHandlerPassiveMode()
  18. {
  19. }
  20. HPSocketCS.TcpPackClient hpClient;
  21. /// <summary>
  22. /// 新的网络对象
  23. /// </summary>
  24. public HPSocketCS.TcpPackClient HpClient
  25. {
  26. get { return hpClient; }
  27. set { hpClient = value; }
  28. }
  29. public TCP_RemoteDataHandlerPassiveMode(HPSocketCS.TcpPackClient client)
  30. {
  31. this.hpClient = client;
  32. }
  33. static string _ServerBasePath = LYFZ.WinAPI.CustomPublicMethod.BasePath;
  34. /// <summary>
  35. /// 服务器端根目录
  36. /// </summary>
  37. public static string ServerBasePath
  38. {
  39. get { return _ServerBasePath; }
  40. set { _ServerBasePath = value; }
  41. }
  42. /// <summary>
  43. /// 获取客户端发送的参数
  44. /// </summary>
  45. /// <param name="ParametersString"></param>
  46. /// <returns></returns>
  47. string[] GetParameters(string ParametersString)
  48. {
  49. string[] mParameters = ParametersString.Split('|');
  50. return mParameters;
  51. }
  52. static string BackupRecordsDateDay = "";
  53. static string BackupRecordsStringText = "";
  54. /// <summary>
  55. /// 获取备份记录
  56. /// </summary>
  57. /// <param name="protocol"></param>
  58. /// <returns></returns>
  59. public TCP_FileProtocol GetBackupRecords(TCP_FileProtocol protocol)
  60. {
  61. TCP_FileProtocol returnProtocol = new TCP_FileProtocol();
  62. returnProtocol = GetToClientFileProtocol("GetOK&"+false.ToString());
  63. if (BackupRecordsDateDay == DateTime.Now.ToString("yyyy-MM-dd"))
  64. {
  65. returnProtocol = GetToClientFileProtocol(BackupRecordsStringText);
  66. }
  67. else
  68. {
  69. try
  70. {
  71. string BackupRecordsDir = LYFZ.WinAPI.CustomPublicMethod.GetFullDirectoryPath(LYFZ.WinAPI.CustomPublicMethod.BasePath) + "DB\\BackupRecords\\";
  72. string PhotoBackupRecordsPath = BackupRecordsDir + "PhotoBackupRecords.txt";//相片
  73. //相片备份记录
  74. string PhotoBackupRecords = "";
  75. string PhotoBackupRecordsText = "";
  76. if (System.IO.File.Exists(PhotoBackupRecordsPath))
  77. {
  78. PhotoBackupRecordsText = System.IO.File.ReadAllText(PhotoBackupRecordsPath, Encoding.UTF8);
  79. }
  80. bool isBackupOK = true;
  81. for (int i = 1; i <= 7; i++)
  82. {
  83. string tempBackupText = "OK|";
  84. if (PhotoBackupRecordsText.Contains(DateTime.Now.AddDays(-i).ToString("yyyy-MM-dd") + "|原片|备份成功|"))
  85. {
  86. if (PhotoBackupRecordsText.Contains(DateTime.Now.AddDays(-i).ToString("yyyy-MM-dd") + "|原片|备份成功|已备份到:"))
  87. {
  88. tempBackupText = "OK|";
  89. }
  90. else
  91. {
  92. tempBackupText = "No|";
  93. }
  94. PhotoBackupRecords += DateTime.Now.AddDays(-i).ToString("yyyy-MM-dd") + "|原片|备份成功|" + tempBackupText + "#";
  95. }
  96. else
  97. {
  98. if (i == 1)
  99. {
  100. isBackupOK = false;
  101. }
  102. }
  103. if (PhotoBackupRecordsText.Contains(DateTime.Now.AddDays(-i).ToString("yyyy-MM-dd") + "|初修片|备份成功|"))
  104. {
  105. if (PhotoBackupRecordsText.Contains(DateTime.Now.AddDays(-i).ToString("yyyy-MM-dd") + "|初修片|备份成功|已备份到:"))
  106. {
  107. tempBackupText = "OK|";
  108. }
  109. else
  110. {
  111. tempBackupText = "No|";
  112. }
  113. PhotoBackupRecords += DateTime.Now.AddDays(-i).ToString("yyyy-MM-dd") + "|初修片|备份成功|" + tempBackupText + "#";
  114. }
  115. else
  116. {
  117. if (i == 1)
  118. {
  119. isBackupOK = false;
  120. }
  121. }
  122. if (PhotoBackupRecordsText.Contains(DateTime.Now.AddDays(-i).ToString("yyyy-MM-dd") + "|精修片|备份成功|"))
  123. {
  124. if (PhotoBackupRecordsText.Contains(DateTime.Now.AddDays(-i).ToString("yyyy-MM-dd") + "|精修片|备份成功|已备份到:"))
  125. {
  126. tempBackupText = "OK|";
  127. }
  128. else
  129. {
  130. tempBackupText = "No|";
  131. }
  132. PhotoBackupRecords += DateTime.Now.AddDays(-i).ToString("yyyy-MM-dd") + "|精修片|备份成功|" + tempBackupText + "#";
  133. }
  134. else
  135. {
  136. if (i == 1)
  137. {
  138. isBackupOK = false;
  139. }
  140. }
  141. if (PhotoBackupRecordsText.Contains(DateTime.Now.AddDays(-i).ToString("yyyy-MM-dd") + "|设计片|备份成功|"))
  142. {
  143. if (PhotoBackupRecordsText.Contains(DateTime.Now.AddDays(-i).ToString("yyyy-MM-dd") + "|设计片|备份成功|已备份到:"))
  144. {
  145. tempBackupText = "OK|";
  146. }
  147. else
  148. {
  149. tempBackupText = "No|";
  150. }
  151. PhotoBackupRecords += DateTime.Now.AddDays(-i).ToString("yyyy-MM-dd") + "|设计片|备份成功|" + tempBackupText + "#";
  152. }
  153. else
  154. {
  155. if (i == 1)
  156. {
  157. isBackupOK = false;
  158. }
  159. }
  160. }
  161. returnProtocol = GetToClientFileProtocol("GetOK&"+isBackupOK.ToString() + "&" + PhotoBackupRecords);
  162. BackupRecordsDateDay = DateTime.Now.ToString("yyyy-MM-dd");
  163. BackupRecordsStringText = returnProtocol.Content;
  164. }
  165. catch { }
  166. }
  167. return returnProtocol;
  168. }
  169. static string MainShopBackupRecordsDateDay = "";
  170. static string MainShopBackupRecordsStringText = "";
  171. /// <summary>
  172. /// 获取总店数据库备份记录
  173. /// </summary>
  174. /// <param name="protocol"></param>
  175. /// <returns></returns>
  176. public TCP_FileProtocol GetMainShopBackupRecords(TCP_FileProtocol protocol)
  177. {
  178. TCP_FileProtocol returnProtocol = new TCP_FileProtocol();
  179. returnProtocol = GetToClientFileProtocol("GetOK&" + false.ToString());
  180. /* if (MainShopBackupRecordsDateDay == DateTime.Now.ToString("yyyy-MM-dd"))
  181. {
  182. returnProtocol = GetToClientFileProtocol(MainShopBackupRecordsStringText);
  183. }
  184. else*/
  185. {
  186. try
  187. {
  188. string BackupRecordsDir = LYFZ.WinAPI.CustomPublicMethod.GetFullDirectoryPath(LYFZ.WinAPI.CustomPublicMethod.BasePath) + "DB\\BackupRecords\\";
  189. string DataBaseBackupRecordsPath = BackupRecordsDir + "DataBaseBackupRecords.txt";//数据库
  190. string DataFileBackupRecordsPath = BackupRecordsDir + "DataFileBackupRecords.txt";//资料文件
  191. //资料文件备份记录
  192. string DataFileBackupRecords = "";
  193. string DataFileBackupRecordsText = "";
  194. if (System.IO.File.Exists(DataFileBackupRecordsPath))
  195. {
  196. DataFileBackupRecordsText = System.IO.File.ReadAllText(DataFileBackupRecordsPath, Encoding.UTF8);
  197. }
  198. //数据库备份记录信息
  199. string DataBaseBackupRecords = "";
  200. string DataBaseBackupRecordsText = "";
  201. if (System.IO.File.Exists(DataBaseBackupRecordsPath))
  202. {
  203. DataBaseBackupRecordsText = System.IO.File.ReadAllText(DataBaseBackupRecordsPath, Encoding.UTF8);
  204. }
  205. bool isBackupOK = true;
  206. for (int i = 1; i <= 7; i++)
  207. {
  208. if (DataBaseBackupRecordsText.Contains(DateTime.Now.AddDays(-i).ToString("yyyy-MM-dd") + "|数据库|备份成功|"))
  209. {
  210. DataBaseBackupRecords += DateTime.Now.AddDays(-i).ToString("yyyy-MM-dd") + "|数据库|备份成功|#";
  211. }
  212. else
  213. {
  214. if (i == 1)
  215. {
  216. isBackupOK = false;
  217. }
  218. }
  219. if (DataFileBackupRecordsText.Contains(DateTime.Now.AddDays(-i).ToString("yyyy-MM-dd") + "|资料文件|备份成功|"))
  220. {
  221. DataFileBackupRecords += DateTime.Now.AddDays(-i).ToString("yyyy-MM-dd") + "|资料文件|备份成功|#";
  222. }
  223. else
  224. {
  225. if (i == 1)
  226. {
  227. isBackupOK = false;
  228. }
  229. }
  230. }
  231. returnProtocol = GetToClientFileProtocol("GetOK&" + isBackupOK.ToString() + "&" + DataBaseBackupRecords+"&" + DataFileBackupRecords);
  232. MainShopBackupRecordsDateDay = DateTime.Now.ToString("yyyy-MM-dd");
  233. MainShopBackupRecordsStringText = returnProtocol.Content;
  234. }
  235. catch { }
  236. }
  237. return returnProtocol;
  238. }
  239. /// <summary>
  240. /// 获取返回到客户端的TCP_FileProtocol对象
  241. /// </summary>
  242. /// <param name="value">要返回的内容</param>
  243. /// <param name="extraInfo">附加信息</param>
  244. /// <returns></returns>
  245. public TCP_FileProtocol GetToClientFileProtocol(string value, string extraInfo = "")
  246. {
  247. return new Network.TCP_FileProtocol(value, extraInfo);
  248. }
  249. #region 服务器端命令处理方法
  250. public static string _UserAvatarSaveFilePath = "";
  251. /// <summary>
  252. /// 服务器端用户头像保存目录
  253. /// </summary>
  254. public static string UserAvatarSaveFilePath
  255. {
  256. get { return ServerBasePath + "\\Resources\\Avatar\\User\\"; }
  257. set { _UserAvatarSaveFilePath = value; }
  258. }
  259. /// <summary>
  260. /// 删除服务器上的文件
  261. /// </summary>
  262. /// <returns></returns>
  263. public TCP_FileProtocol DeleteFile(TCP_FileProtocol protocol)
  264. {
  265. TCP_FileProtocol returnProtocol = new TCP_FileProtocol();
  266. string[] tempValues = protocol.Content.Split('?');
  267. string[] delFiles = tempValues[0].Split('|');
  268. //服务器端文件路径
  269. string saveFilePath = "";
  270. try
  271. {
  272. foreach (string delfile in delFiles)
  273. {
  274. if (delfile.Trim().Length > 0)
  275. {
  276. saveFilePath = delfile;
  277. if (delfile.Contains(":"))
  278. {
  279. saveFilePath = delfile;
  280. }
  281. else
  282. {
  283. saveFilePath = ServerBasePath + "\\" + delfile.TrimStart('\\');
  284. }
  285. if (System.IO.File.Exists(saveFilePath))
  286. {
  287. System.IO.File.Delete(saveFilePath);
  288. }
  289. }
  290. }
  291. returnProtocol = GetToClientFileProtocol("删除成功");
  292. // returnProtocol = GetToClientFileProtocol("删除失败,服务器上找不到“" + protocol.FileName + "”文件!");
  293. }
  294. catch (Exception ex)
  295. {
  296. returnProtocol = GetToClientFileProtocol("删除失败,原因:“" + ex.Message + "”");
  297. }
  298. return returnProtocol;
  299. }
  300. /// <summary>
  301. /// 获取服务器上指定目录下的文件列表
  302. /// </summary>
  303. /// <returns></returns>
  304. public TCP_FileProtocol GeTFileList(TCP_FileProtocol protocol)
  305. {
  306. TCP_FileProtocol returnProtocol = new TCP_FileProtocol();
  307. string[] Parameters = protocol.Content.Split('|');
  308. if (Parameters.Length >= 3)
  309. {
  310. string dirPath = Parameters[0];
  311. if (!dirPath.Contains(":"))
  312. {
  313. dirPath = ServerBasePath + "\\" + dirPath.TrimStart('\\');
  314. }
  315. bool isSearchSubfolder = false;//是否搜索子目录
  316. try
  317. {
  318. isSearchSubfolder = Convert.ToBoolean(Parameters[1]);
  319. }
  320. catch { }
  321. string searchPattern = Parameters[2];
  322. try
  323. {
  324. if (System.IO.Directory.Exists(dirPath))
  325. {
  326. string[] retFiles = null;
  327. if (isSearchSubfolder)
  328. {
  329. retFiles = System.IO.Directory.GetFiles(dirPath, searchPattern, SearchOption.AllDirectories);
  330. }
  331. else
  332. {
  333. retFiles = System.IO.Directory.GetFiles(dirPath, searchPattern, SearchOption.TopDirectoryOnly);
  334. }
  335. StringBuilder retFilesString = new StringBuilder();
  336. foreach (string file in retFiles)
  337. {
  338. retFilesString.Append(file.Replace(ServerBasePath, "") + "|");
  339. }
  340. returnProtocol = GetToClientFileProtocol("获取成功", retFilesString.ToString());
  341. retFilesString.Clear();
  342. }
  343. else
  344. {
  345. returnProtocol = GetToClientFileProtocol("指定的目录“" + dirPath + "”在服务器上不存在。");
  346. }
  347. }
  348. catch (Exception ex)
  349. {
  350. returnProtocol = GetToClientFileProtocol("获取失败,原因:“" + ex.Message + "”");
  351. }
  352. }
  353. else
  354. {
  355. returnProtocol = GetToClientFileProtocol("参数不正确");
  356. }
  357. return returnProtocol;
  358. }
  359. /// <summary>
  360. /// 获取服务器上指定目录下的目录列表
  361. /// </summary>
  362. /// <returns></returns>
  363. public TCP_FileProtocol GetDirectoryList(TCP_FileProtocol protocol)
  364. {
  365. TCP_FileProtocol returnProtocol = new TCP_FileProtocol();
  366. string[] Parameters = protocol.Content.Split('|');
  367. if (Parameters.Length >= 3)
  368. {
  369. string dirPath = Parameters[0];
  370. if (!dirPath.Contains(":"))
  371. {
  372. dirPath = ServerBasePath + "\\" + dirPath.TrimStart('\\');
  373. }
  374. bool isSearchSubfolder = false;//是否搜索子目录
  375. try
  376. {
  377. isSearchSubfolder = Convert.ToBoolean(Parameters[1]);
  378. }
  379. catch { }
  380. string searchPattern = Parameters[2];
  381. try
  382. {
  383. if (System.IO.Directory.Exists(dirPath))
  384. {
  385. string[] retDirs = null;
  386. if (isSearchSubfolder)
  387. {
  388. retDirs = System.IO.Directory.GetDirectories(dirPath, searchPattern, SearchOption.AllDirectories);
  389. }
  390. else
  391. {
  392. retDirs = System.IO.Directory.GetDirectories(dirPath, searchPattern, SearchOption.TopDirectoryOnly);
  393. }
  394. StringBuilder retDirString = new StringBuilder();
  395. foreach (string dir in retDirs)
  396. {
  397. retDirString.Append(dir.Replace(ServerBasePath, "") + "|");
  398. }
  399. returnProtocol = GetToClientFileProtocol("获取成功", retDirString.ToString());
  400. retDirString.Clear();
  401. }
  402. else
  403. {
  404. returnProtocol = GetToClientFileProtocol("获取失败,指定的目录“" + dirPath + "”在服务器上不存在。");
  405. }
  406. }
  407. catch (Exception ex)
  408. {
  409. returnProtocol = GetToClientFileProtocol("获取失败,原因:“" + ex.Message + "”");
  410. }
  411. }
  412. else
  413. {
  414. returnProtocol = GetToClientFileProtocol("获取失败,参数不正确");
  415. }
  416. return returnProtocol;
  417. }
  418. /// <summary>
  419. /// 删除服务器上的目录
  420. /// </summary>
  421. /// <returns></returns>
  422. public TCP_FileProtocol DeleteDirectory(TCP_FileProtocol protocol)
  423. {
  424. TCP_FileProtocol returnProtocol = new TCP_FileProtocol();
  425. string[] Parameters = protocol.Content.Split('|');
  426. if (Parameters.Length >= 2)
  427. {
  428. string dirPath = Parameters[0];
  429. if (!dirPath.Contains(":"))
  430. {
  431. dirPath = ServerBasePath + "\\" + dirPath.TrimStart('\\');
  432. }
  433. bool isDelAllFiles = false;//是否删除目录下的所以文件
  434. try
  435. {
  436. isDelAllFiles = Convert.ToBoolean(Parameters[1]);
  437. }
  438. catch { }
  439. try
  440. {
  441. if (System.IO.Directory.Exists(dirPath))
  442. {
  443. try
  444. {
  445. System.IO.Directory.Delete(dirPath);
  446. returnProtocol = GetToClientFileProtocol("删除成功");
  447. }
  448. catch (Exception ex)
  449. {
  450. returnProtocol = GetToClientFileProtocol("删除失败,原因:" + ex.Message);
  451. }
  452. }
  453. else
  454. {
  455. returnProtocol = GetToClientFileProtocol("指定的目录“" + dirPath + "”在服务器上不存在。");
  456. }
  457. }
  458. catch (Exception ex)
  459. {
  460. returnProtocol = GetToClientFileProtocol("获取失败,原因:“" + ex.Message + "”");
  461. }
  462. }
  463. else
  464. {
  465. returnProtocol = GetToClientFileProtocol("参数不正确");
  466. }
  467. return returnProtocol;
  468. }
  469. /// <summary>
  470. /// 获取服务器指定文件的信息
  471. /// </summary>
  472. /// <returns></returns>
  473. public TCP_FileProtocol GetFileInfo(TCP_FileProtocol protocol)
  474. {
  475. TCP_FileProtocol returnProtocol = new TCP_FileProtocol();
  476. //服务器端文件路径
  477. string saveFilePath = protocol.Content;
  478. if (!protocol.Content.Contains(":"))
  479. {
  480. saveFilePath = HPSocketCS.Extended.CommonLibrary.GetFullDirectoryPath(HPSocketCS.Extended.CommonLibrary.BasePath) + protocol.Content;
  481. }
  482. ServerFileInfo retfileInfo = new ServerFileInfo();
  483. if (!retfileInfo.IsExists&&System.IO.File.Exists(saveFilePath))
  484. {
  485. System.IO.FileInfo fInfo = new FileInfo(saveFilePath);
  486. retfileInfo.GetMsg = "成功获取指定文件信息";
  487. retfileInfo.FileName = fInfo.FullName;
  488. retfileInfo.FileSize = fInfo.Length;
  489. retfileInfo.IsExists = true;
  490. retfileInfo.CreateDatetime = fInfo.CreationTime;
  491. retfileInfo.UpdateDatetime = fInfo.LastWriteTime;
  492. if (retfileInfo.FileSize < HPSocketCS.Sdk.FileMD5VerifySize)
  493. {
  494. retfileInfo.FileMd5 = LYFZ.WinAPI.SDKSecurity.GetMD5HashFromFile(fInfo.FullName);
  495. }
  496. }
  497. else if (!retfileInfo.IsExists)
  498. {
  499. retfileInfo.GetMsg = "服务器上没有找到你请求的“" + protocol.Content + "”文件";
  500. }
  501. returnProtocol = GetToClientFileProtocol(retfileInfo.ToString());
  502. return returnProtocol;
  503. }
  504. //Import Photos
  505. static List<ClientRequestObject> _ImportPhotosRequestList = new List<ClientRequestObject>();
  506. /// <summary>
  507. /// 客户端导入相片请求集合
  508. /// </summary>
  509. public static List<ClientRequestObject> ImportPhotosRequestList
  510. {
  511. get { return TCP_RemoteDataHandlerPassiveMode._ImportPhotosRequestList; }
  512. set { TCP_RemoteDataHandlerPassiveMode._ImportPhotosRequestList = value; }
  513. }
  514. /// <summary>
  515. /// 检查对象在集合中是否存在
  516. /// </summary>
  517. /// <param name="requestObject"></param>
  518. /// <returns></returns>
  519. bool ImportPhotosRequestExist(ClientRequestObject requestObject)
  520. {
  521. bool bl = false;
  522. foreach (ClientRequestObject obj in ImportPhotosRequestList)
  523. {
  524. if (obj.Key == requestObject.Key)
  525. {
  526. bl = true;
  527. break;
  528. }
  529. }
  530. return bl;
  531. }
  532. /// <summary>
  533. /// 开始导入相片
  534. /// </summary>
  535. /// <param name="protocol"></param>
  536. /// <returns></returns>
  537. public TCP_FileProtocol StartImportPhotos(TCP_FileProtocol protocol)
  538. {
  539. TCP_FileProtocol returnProtocol = new TCP_FileProtocol();
  540. ClientRequestObject requestObject = new ClientRequestObject(protocol.Content);
  541. TCP_ClientConnectInfo cInfo = new TCP_ClientConnectInfo(protocol.ClientInfo);
  542. requestObject.IP = cInfo.IP;
  543. requestObject.Prot = cInfo.Port;
  544. requestObject.HostIdentity = cInfo.HostIdentity;
  545. requestObject.ConnID = cInfo.ConnId;
  546. if (!ImportPhotosRequestExist(requestObject))
  547. {
  548. }
  549. returnProtocol = GetToClientFileProtocol("Start");
  550. return returnProtocol;
  551. }
  552. static List<ClientRequestObject> _GenerateThumbnailsRequestList = new List<ClientRequestObject>();
  553. /// <summary>
  554. /// 生成缩略图请求集合
  555. /// </summary>
  556. public static List<ClientRequestObject> GenerateThumbnailsRequestList
  557. {
  558. get { return TCP_RemoteDataHandlerPassiveMode._GenerateThumbnailsRequestList; }
  559. set { TCP_RemoteDataHandlerPassiveMode._GenerateThumbnailsRequestList = value; }
  560. }
  561. /// <summary>
  562. /// 检查对象在生成缩略图请求集合中是否存在
  563. /// </summary>
  564. /// <param name="requestObject"></param>
  565. /// <returns></returns>
  566. bool GenerateThumbnailsRequestExist(ClientRequestObject requestObject)
  567. {
  568. bool bl = false;
  569. lock (GenerateThumbnailsRequestList)
  570. {
  571. foreach (ClientRequestObject obj in GenerateThumbnailsRequestList)
  572. {
  573. if (obj.Key == requestObject.Key)
  574. {
  575. bl = true;
  576. break;
  577. }
  578. }
  579. }
  580. return bl;
  581. }
  582. public static void RemoveGenerateThumbnailsRequest(ClientRequestObject requestObject)
  583. {
  584. lock (GenerateThumbnailsRequestList)
  585. {
  586. List<ClientRequestObject> delObjList = new List<ClientRequestObject>();
  587. foreach (ClientRequestObject obj in GenerateThumbnailsRequestList)
  588. {
  589. if (obj.ConnID == requestObject.ConnID)
  590. {
  591. delObjList.Add(obj);
  592. }
  593. }
  594. foreach (ClientRequestObject obj in delObjList)
  595. {
  596. GenerateThumbnailsRequestList.Remove(obj);
  597. }
  598. }
  599. }
  600. static int _RegConnCount = 0;
  601. /// <summary>
  602. /// 客户端坐席注册数
  603. /// </summary>
  604. public static int RegConnCount
  605. {
  606. get { return TCP_RemoteDataHandlerPassiveMode._RegConnCount; }
  607. set { TCP_RemoteDataHandlerPassiveMode._RegConnCount = value; }
  608. }
  609. private static string _ServerGlobalIDKey = "";
  610. public static string ServerGlobalIDKey
  611. {
  612. get { return TCP_RemoteDataHandlerPassiveMode._ServerGlobalIDKey; }
  613. set { TCP_RemoteDataHandlerPassiveMode._ServerGlobalIDKey = value; }
  614. }
  615. #endregion
  616. #endregion
  617. #region 客户端发送指令到服务端处理方法
  618. /// <summary>
  619. /// 发送SQL数据库请求命令到服务器并返回请求结果 (测试用)
  620. /// </summary>
  621. /// <param name="requestData">请求的SQL命令数据类</param>
  622. /// <param name="millisecondsTimeout"></param>
  623. /// <returns></returns>
  624. public HPSocketCS.Extended.SQLHelperReturnData HP_SendSqlCommandToServer(HPSocketCS.Extended.SQLHelperRequestData requestData, int millisecondsTimeout = 1000*90)
  625. {
  626. HPSocketCS.Extended.SQLHelperReturnData retData = null;
  627. try
  628. {
  629. byte[] tempSendBuffer = HPSocketCS.Extended.DataSetSerializerDeserialize.ObjectSerializerCompressionRetBytes(requestData);
  630. using (System.IO.MemoryStream retMstream = this.HpClient.AutoUnpackingSendAndReturnResult(tempSendBuffer, HPSocketCS.Extended.DataType.SQLHelper, HPSocketCS.Extended.TransferRequestCommand.SQLHelperData, millisecondsTimeout))
  631. {
  632. if (retMstream != null && retMstream.Length > 0)
  633. {
  634. retData = (HPSocketCS.Extended.SQLHelperReturnData)HPSocketCS.Extended.DataSetSerializerDeserialize.ObjectDeserializeDecompress(retMstream.GetBuffer());
  635. LYFZ.Network.TCPNetworkClient.TCP_NetworkClient.FromServerStartTimeStamp = retData.ServerStartTimeStamp;
  636. retData.DataSize = retMstream.Length;
  637. }
  638. if (retMstream != null)
  639. {
  640. retMstream.Close();
  641. }
  642. }
  643. }
  644. catch (Exception ex)
  645. {
  646. retData = new HPSocketCS.Extended.SQLHelperReturnData("SQL请求处理出错:"+ex.Message);
  647. HPSocketCS.Extended.SystemFileLogs.WriteLogs(retData.ReturnMessage);
  648. }
  649. return retData;
  650. }
  651. /// <summary>
  652. /// 发送指令到服务端并返回服务器的处理结果
  653. /// </summary>
  654. /// <param name="type">本次传输类型</param>
  655. /// <param name="command">要发送到服务器的指令</param>
  656. /// <param name="msgOrParameters">发送到服务器指令的参数或是说明,注:多个参数用 “|”分隔</param>
  657. /// <returns></returns>
  658. public TCP_FileProtocol HP_SendCommandToServer(InformationType type, HPSocketCS.Extended.TransferRequestCommand command, string msgOrParameters, int millisecondsTimeout = 1000*90)
  659. {
  660. TCP_FileProtocol protocol = new TCP_FileProtocol();
  661. try
  662. {
  663. LYFZ.Network.TCP_FileProtocol msgXML = new Network.TCP_FileProtocol(msgOrParameters);
  664. byte[] tempSendBuffer = Encoding.UTF8.GetBytes(msgXML.ToString()); // 获得缓存
  665. using (System.IO.MemoryStream retMstream = this.HpClient.AutoUnpackingSendAndReturnResult(tempSendBuffer, HPSocketCS.Extended.DataType.Text, command, millisecondsTimeout))
  666. {
  667. if (retMstream != null && retMstream.Length > 0)
  668. {
  669. if (type == InformationType.Data)
  670. {
  671. protocol = new TCP_FileProtocol("return");
  672. protocol.DataArray = retMstream.GetBuffer();
  673. protocol.ReceiveFileSize = retMstream.Length;
  674. }
  675. else
  676. {
  677. string ReceiveInfo = Encoding.UTF8.GetString(retMstream.GetBuffer());
  678. TCP_ProtocolHelperXML helper = new TCP_ProtocolHelperXML(ReceiveInfo.Trim());
  679. protocol = helper.GetProtocol();
  680. protocol.ReceiveFileSize = retMstream.Length;
  681. LYFZ.Network.TCPNetworkClient.TCP_NetworkClient.FromServerStartTimeStamp = protocol.ServerStartTimeStamp;
  682. }
  683. }
  684. }
  685. }
  686. catch (Exception ex)
  687. {
  688. HPSocketCS.Extended.SystemFileLogs.WriteLogs("连接错误:" + ex.Message);
  689. }
  690. return protocol;
  691. }
  692. /// <summary>
  693. /// 发送指令到服务端并返回服务器的处理结果
  694. /// </summary>
  695. /// <param name="command">要发送到服务器的指令</param>
  696. /// <param name="msgOrParameters">发送到服务器指令的参数或是说明,注:多个参数用 “|”分隔</param>
  697. /// <returns></returns>
  698. public string SendCommandToServerRetMessage(HPSocketCS.Extended.TransferRequestCommand command, string msgOrParameters = "Hello", int millisecondsTimeout = 1000*90)
  699. {
  700. string tempMsg = "";
  701. TCP_FileProtocol protocol = HP_SendCommandToServer(InformationType.Message, command, msgOrParameters, millisecondsTimeout);
  702. if (protocol.InfoType == InformationType.Message)
  703. {
  704. tempMsg = protocol.Content;
  705. }
  706. return tempMsg;
  707. }
  708. #endregion
  709. }
  710. }