Advertisement
Guest User

LoginClient.cs

a guest
Jul 29th, 2016
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.97 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Net;
  7. using System.Net.Sockets;
  8. using System.Threading;
  9.  
  10. namespace CMP
  11. {
  12. public delegate void ProcessCompleteDel(Headers header, ErrorCodes errorCode);
  13. public delegate void ProcessCompleteDelLogin(Headers header, ErrorCodes errorCode, String userid);
  14. public delegate void ProcessCompleteDel1(Headers header, ErrorCodes errorCode, string[] friendL);
  15. public delegate void ProcessChatWindow(Headers header, ErrorCodes errorCode);
  16. internal struct LoginArgs
  17. {
  18. public string Username;
  19. public string Password;
  20. public Headers Header;
  21. public ProcessCompleteDelLogin Callback;
  22.  
  23.  
  24. public LoginArgs(Headers header, string username, string password, ProcessCompleteDelLogin callback)
  25. {
  26. Username = username;
  27. Password = password;
  28. Header = header;
  29. Callback = callback;
  30. }
  31.  
  32. }
  33.  
  34. internal struct messageFriendArgs
  35. {
  36. public string Username;
  37. public Headers Header;
  38. public ProcessChatWindow Callback;
  39. public string Text;
  40.  
  41. public messageFriendArgs(Headers header, string username, string text, ProcessChatWindow callback)
  42. {
  43. Username = username;
  44. Header = header;
  45. Text = text;
  46. Callback = callback;
  47. }
  48.  
  49. }
  50.  
  51. internal struct sendHBArgs
  52. {
  53. public string Username;
  54. public Headers Header;
  55. public ProcessCompleteDel Callback;
  56.  
  57. public sendHBArgs(Headers header, string username, ProcessCompleteDel callback)
  58. {
  59. Username = username;
  60. Header = header;
  61. Callback = callback;
  62. }
  63.  
  64. }
  65.  
  66. internal struct friendsArgs
  67. {
  68. public string Userid;
  69. public Headers Header;
  70. public ProcessCompleteDel1 Callback;
  71.  
  72. public friendsArgs(Headers header, string userid, ProcessCompleteDel1 callback)
  73. {
  74. Userid = userid;
  75. Header = header;
  76. Callback = callback;
  77. }
  78.  
  79. }
  80.  
  81.  
  82. internal struct registerArgs
  83. {
  84. public string Username;
  85. public string Password;
  86. public string Email;
  87. public Headers Header;
  88. public ProcessCompleteDel Callback;
  89.  
  90. public registerArgs(Headers header, string username, string password, string email, ProcessCompleteDel callback)
  91. {
  92. Username = username;
  93. Password = password;
  94. Email = email;
  95. Header = header;
  96. Callback = callback;
  97. }
  98.  
  99. }
  100.  
  101. internal struct LogoutArgs
  102. {
  103. public string Username;
  104. public Headers Header;
  105. public ProcessCompleteDel Callback;
  106. public LogoutArgs(Headers header, string username, ProcessCompleteDel callback)
  107. {
  108. Username = username;
  109. Header = header;
  110. Callback = callback;
  111. }
  112. }
  113.  
  114. public class LoginClient
  115. {
  116. public const int PORT = 25327;
  117. Socket sck;
  118. //Socket sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  119. private byte[] buffer = new byte[512];
  120. public LoginClient()
  121. {
  122. //sck.Connect(ServerInfo.Server, ServerInfo.Port);
  123.  
  124. Listener listener = new Listener();
  125. listener.Accepted += listener_Accepted;
  126. listener.Start(PORT);
  127.  
  128.  
  129. }
  130.  
  131. private void listener_Accepted(object sender, Socket e)
  132. {
  133. Console.WriteLine("Message Recieved");
  134. }
  135.  
  136. public void Login(string username, string password, ProcessCompleteDelLogin callback)
  137. {
  138. LoginArgs args = new LoginArgs(Headers.Login, username, password, callback);
  139. ThreadPool.QueueUserWorkItem(new WaitCallback(process), args);
  140. }
  141.  
  142. public void chatFriend(string username, string text, ProcessChatWindow callback)
  143. {
  144. Console.WriteLine("U: {0}", username);
  145. messageFriendArgs args = new messageFriendArgs(Headers.sendMessage, username, text, callback);
  146. ThreadPool.QueueUserWorkItem(new WaitCallback(sendMsg), args);
  147. }
  148.  
  149. public void sendHeartBeat(string username, ProcessCompleteDel callback)
  150. {
  151. Console.WriteLine("U111: {0}", username);
  152. sendHBArgs args = new sendHBArgs(Headers.sendHeartBeat, username, callback);
  153. ThreadPool.QueueUserWorkItem(new WaitCallback(heartbeatProc), args);
  154. }
  155.  
  156. public void friendsList(string userid, ProcessCompleteDel1 callback)
  157. {
  158. friendsArgs args = new friendsArgs(Headers.friendsList, userid, callback);
  159. ThreadPool.QueueUserWorkItem(new WaitCallback(processF), args);
  160. }
  161. /**
  162. public void StatusUpdate(string username, string status, ProcessCompleteDel callback)
  163. {
  164. LoginArgs args = new LoginArgs(Headers.statusUpdate, username, status, callback);
  165. ThreadPool.QueueUserWorkItem(new WaitCallback(process), args);
  166. } **/
  167.  
  168. public void Register(string username, string password, string email, ProcessCompleteDel callback)
  169. {
  170.  
  171. registerArgs args = new registerArgs(Headers.Register, username, password, email, callback);
  172. ThreadPool.QueueUserWorkItem(new WaitCallback(processRegister), args);
  173. }
  174.  
  175. public void Logout(string username, ProcessCompleteDel callback)
  176. {
  177. LogoutArgs args = new LogoutArgs(Headers.Logout, username, callback);
  178. ThreadPool.QueueUserWorkItem(new WaitCallback(processL), args);
  179. }
  180.  
  181. private void processRegister(object o)
  182. {
  183. registerArgs args = (registerArgs)o;
  184.  
  185. //Socket sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  186.  
  187. try
  188. {
  189. //sck.Connect(ServerInfo.Server, ServerInfo.Port);
  190.  
  191. PacketWriter pw = new PacketWriter();
  192. pw.Write((ushort)args.Header);
  193. pw.Write(args.Username);
  194. pw.Write(args.Password);
  195. pw.Write(args.Email);
  196.  
  197. byte[] data = pw.GetBytes();
  198.  
  199. sck.Send(data, 0, data.Length, SocketFlags.None);
  200.  
  201. sck.ReceiveTimeout = 18000;
  202.  
  203. sck.Receive(buffer, 0, buffer.Length, SocketFlags.None);
  204.  
  205. PacketReader pr = new PacketReader(buffer);
  206.  
  207. Headers header = (Headers)pr.ReadUInt16();
  208. ErrorCodes error = (ErrorCodes)pr.ReadUInt16();
  209.  
  210. args.Callback(header, error);
  211.  
  212. }
  213. catch
  214. {
  215. args.Callback(args.Header, ErrorCodes.Error);
  216. }
  217. finally
  218. {
  219. //sck.Close();
  220. }
  221. }
  222.  
  223. private void sendMsg(object o)
  224. {
  225. messageFriendArgs args = (messageFriendArgs)o;
  226. //Socket sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  227.  
  228. try
  229. {
  230. //sck.Connect(ServerInfo.Server, ServerInfo.Port);
  231.  
  232. Client server = new Client(sck);
  233. PacketWriter pw = new PacketWriter();
  234. pw.Write((ushort)args.Header);
  235. pw.Write(args.Username);
  236. pw.Write(args.Text);
  237.  
  238. Console.WriteLine("User: {0}", args.Username);
  239.  
  240. byte[] data = pw.GetBytes();
  241.  
  242. sck.Send(data, 0, data.Length, SocketFlags.None);
  243.  
  244. sck.ReceiveTimeout = 18000;
  245.  
  246. sck.Receive(buffer, 0, buffer.Length, SocketFlags.None);
  247.  
  248. PacketReader pr = new PacketReader(buffer);
  249.  
  250. Headers header = (Headers)pr.ReadUInt16();
  251. ErrorCodes error = (ErrorCodes)pr.ReadUInt16();
  252.  
  253.  
  254. switch (header)
  255. {
  256. case Headers.recieveMessage:
  257. {
  258. recieveMsg(server, pr.ReadString(), pr.ReadString());
  259. }
  260. break;
  261. }
  262.  
  263.  
  264.  
  265. args.Callback(header, error);
  266.  
  267. }
  268. catch
  269. {
  270. args.Callback(args.Header, ErrorCodes.Error);
  271. }
  272. finally
  273. {
  274. //sck.Close();
  275. }
  276.  
  277. }
  278.  
  279. private void process(object o)
  280. {
  281. LoginArgs args = (LoginArgs)o;
  282.  
  283. //Socket sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  284.  
  285. try
  286. {
  287. //sck.Connect(ServerInfo.Server, ServerInfo.Port);
  288.  
  289. PacketWriter pw = new PacketWriter();
  290. pw.Write((ushort)args.Header);
  291. pw.Write(args.Username);
  292. pw.Write(args.Password);
  293.  
  294. byte[] data = pw.GetBytes();
  295.  
  296. sck.Send(data, 0, data.Length, SocketFlags.None);
  297.  
  298. sck.ReceiveTimeout = 180000;
  299.  
  300. sck.Receive(buffer, 0, buffer.Length, SocketFlags.None);
  301.  
  302. PacketReader pr = new PacketReader(buffer);
  303.  
  304. Headers header = (Headers)pr.ReadUInt16();
  305. ErrorCodes error = (ErrorCodes)pr.ReadUInt16();
  306. String Userid = pr.ReadString();
  307. args.Callback(header, error, Userid);
  308.  
  309. }
  310. catch
  311. {
  312. args.Callback(args.Header, ErrorCodes.Error,null);
  313. }
  314. finally
  315. {
  316. //sck.Close();
  317. }
  318. }
  319.  
  320. public void heartbeatProc(object o)
  321. {
  322. Thread heartbeatThread = new Thread(heartbeatProc) { IsBackground = true };
  323.  
  324. while (true)
  325. {
  326. //Socket sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  327. sendHBArgs args = (sendHBArgs)o;
  328. try
  329. {
  330.  
  331. //sck.Connect(ServerInfo.Server, ServerInfo.Port);
  332.  
  333. Client server = new Client(sck);
  334. PacketWriter pw = new PacketWriter();
  335. pw.Write((ushort)args.Header);
  336. pw.Write(args.Username);
  337.  
  338. Console.WriteLine("User: {0}", args.Username);
  339.  
  340. byte[] data = pw.GetBytes();
  341.  
  342. sck.Send(data, 0, data.Length, SocketFlags.None);
  343.  
  344. sck.ReceiveTimeout = 18000;
  345.  
  346. sck.Receive(buffer, 0, buffer.Length, SocketFlags.None);
  347.  
  348. PacketReader pr = new PacketReader(buffer);
  349.  
  350. Headers header = (Headers)pr.ReadUInt16();
  351. ErrorCodes error = (ErrorCodes)pr.ReadUInt16();
  352.  
  353. args.Callback(header, error);
  354.  
  355. }
  356. catch
  357. {
  358.  
  359. args.Callback(args.Header, ErrorCodes.Error);
  360. }
  361. finally
  362. {
  363.  
  364. }
  365.  
  366. Thread.Sleep(TimeSpan.FromMinutes(1)); //Or just 60000
  367. }
  368. }
  369.  
  370. private void processF(object o)
  371. {
  372. friendsArgs args = (friendsArgs)o;
  373.  
  374. //Socket sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  375.  
  376. try
  377. {
  378. //sck.Connect(ServerInfo.Server, ServerInfo.Port);
  379.  
  380. PacketWriter pw = new PacketWriter();
  381. pw.Write((ushort)args.Header);
  382. pw.Write(args.Userid);
  383.  
  384. Console.WriteLine("Sending FL Request. "+ (ushort)args.Header);
  385.  
  386. byte[] data = pw.GetBytes();
  387.  
  388. sck.Send(data, 0, data.Length, SocketFlags.None);
  389.  
  390. sck.ReceiveTimeout = 18000;
  391.  
  392. sck.Receive(buffer, 0, buffer.Length, SocketFlags.None);
  393.  
  394. PacketReader pr = new PacketReader(buffer);
  395.  
  396. Headers header = (Headers)pr.ReadUInt16();
  397. ErrorCodes error = (ErrorCodes)pr.ReadUInt16();
  398.  
  399. string[] username = pr.ReadStringArray(); //Read the
  400.  
  401. args.Callback(header, error, username);
  402.  
  403. }
  404. catch
  405. {
  406. args.Callback(args.Header, ErrorCodes.Error, null);
  407. }
  408. finally
  409. {
  410. //sck.Close();
  411. }
  412. }
  413.  
  414. static void recieveMsg(Client client, string username, string text)
  415. {
  416. Console.WriteLine("Message recieved from users !!!!");
  417. }
  418.  
  419. private void processL(object o)
  420. {
  421. LogoutArgs args = (LogoutArgs)o;
  422.  
  423. //Socket sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  424.  
  425. try
  426. {
  427. //sck.Connect(ServerInfo.Server, ServerInfo.Port);
  428.  
  429. PacketWriter pw = new PacketWriter();
  430. pw.Write((ushort)args.Header);
  431. pw.Write(args.Username);
  432.  
  433. byte[] data = pw.GetBytes();
  434.  
  435. sck.Send(data, 0, data.Length, SocketFlags.None);
  436.  
  437. sck.ReceiveTimeout = 8000;
  438.  
  439. sck.Receive(buffer, 0, buffer.Length, SocketFlags.None);
  440.  
  441. PacketReader pr = new PacketReader(buffer);
  442.  
  443. Headers header = (Headers)pr.ReadUInt16();
  444. ErrorCodes error = (ErrorCodes)pr.ReadUInt16();
  445.  
  446. args.Callback(header, error);
  447.  
  448. }
  449. catch
  450. {
  451. args.Callback(args.Header, ErrorCodes.Error);
  452. }
  453. finally
  454. {
  455. //sck.Close();
  456. }
  457. }
  458.  
  459. }
  460. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement