Guest User

Untitled

a guest
Jul 7th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.80 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using ConsoleApplication1;
  6. using Lidgren.Network;
  7. using System.Net;
  8. using System.Threading;
  9. using N = System.Net;
  10. using System.Collections;
  11. using System.Net.Sockets;
  12. using System.Data;
  13. using MySql.Data.MySqlClient;
  14.  
  15.  
  16. namespace GameServer
  17. {
  18. class Server
  19. {
  20. public TcpListener m_Socket;
  21. public int count = 0;
  22. static int objectsToCreate = 1000;
  23. Lobby[] lobbies = new Lobby[objectsToCreate];
  24.  
  25. public Player current_player = new Player();
  26.  
  27. public MySqlConnection database()
  28. {
  29. String connString = "Server=127.0.0.1;Port=3306;Database=rpc;Uid=server;password=Derp123;";
  30. MySqlConnection conn = new MySqlConnection(connString);
  31. //MySqlCommand command = conn.CreateCommand();
  32. /*
  33. command.CommandText = "Select * from user";
  34. try
  35. {
  36. conn.Open();
  37. }
  38. catch (Exception ex)
  39. {
  40. Console.WriteLine(ex);
  41. }
  42. MySqlDataReader reader = command.ExecuteReader();
  43. while (reader.Read())
  44. {
  45. Console.WriteLine(reader["username"].ToString() + " " + reader["Password"].ToString());
  46.  
  47. }
  48. //Console.ReadLine();
  49. */
  50. return conn;
  51. }
  52.  
  53. private void Server_start()
  54. {
  55. Thread acceptClients = new Thread(new ThreadStart(acceptConnections));
  56. acceptClients.Start();
  57. }
  58.  
  59. private void acceptConnections()
  60. {
  61. try
  62. {
  63. IPAddress ipConfig = IPAddress.Parse("192.168.1.124");
  64. m_Socket = new TcpListener(ipConfig, 6969);
  65. m_Socket.Start();
  66. Console.WriteLine("listening");
  67.  
  68. while (true)
  69. {
  70. TcpClient m_Client = m_Socket.AcceptTcpClient();
  71. //sendData(m_Client[count], "connected");
  72. Console.WriteLine("new client");
  73. Thread clientThread = new Thread(new ParameterizedThreadStart(HandleClientComm));
  74. clientThread.Start(m_Client);
  75.  
  76. }
  77. }
  78. catch (Exception error)
  79. {
  80. Console.WriteLine(error.Message);
  81. }
  82. }
  83.  
  84. private void HandleClientComm(object client)
  85. {
  86. TcpClient tcpClient = (TcpClient)client;
  87. NetworkStream clientStream = tcpClient.GetStream();
  88.  
  89. byte[] message = new byte[4096];
  90. int bytesRead;
  91. String client_msg;
  92. String username = null;
  93.  
  94. while (true)
  95. {
  96. bytesRead = 0;
  97. #region read_msg
  98. try
  99. {
  100. //blocks until a client sends a message
  101. bytesRead = clientStream.Read(message, 0, 4096);
  102. Console.WriteLine(bytesRead);
  103. }
  104. catch
  105. {
  106. //a socket error has occured
  107. break;
  108. }
  109.  
  110. if (bytesRead == 0)
  111. {
  112. //the client has disconnected from the server
  113. Console.WriteLine("errorr1!!!!");
  114. break;
  115. }
  116.  
  117. if (bytesRead > 0)
  118. {
  119. ASCIIEncoding encoder = new ASCIIEncoding();
  120. client_msg = encoder.GetString(message, 0, bytesRead);
  121. //Console.WriteLine(client_msg);
  122. byte[] buffer;
  123. #region client_msg switch
  124. switch (client_msg)
  125. {
  126. case "Login":
  127. if (username == null)
  128. {
  129. Console.WriteLine("Login\n");
  130. username = Login(clientStream);
  131. }
  132. else
  133. {
  134. Console.WriteLine("already logged in!\n");
  135. buffer = encoder.GetBytes("alrdy_log");
  136. clientStream.Write(buffer, 0, buffer.Length);
  137. }
  138. continue;
  139. case "UpdateProfile":
  140. Console.WriteLine("UpdateProfile\n");
  141. UpdateProfile(clientStream, username);
  142. continue;
  143. case "GetProfile":
  144. if (username != null)
  145. {
  146. Console.WriteLine("GetProfile\n");
  147. GetProfile(clientStream, username);
  148. continue;
  149. }
  150. else
  151. {
  152. Console.WriteLine("Not Logged in get profile area!\n");
  153. buffer = encoder.GetBytes("no_login");
  154. clientStream.Write(buffer, 0, buffer.Length);
  155. }
  156.  
  157. continue;
  158. case "HostLobby":
  159. if (username != null)
  160. {
  161. Console.WriteLine("HostLobby\n");
  162. HostLobby(clientStream, username);
  163. continue;
  164. }
  165. else
  166. {
  167. Console.WriteLine("Not Logged in Hostlobby area!\n");
  168. buffer = encoder.GetBytes("no_login");
  169. clientStream.Write(buffer, 0, buffer.Length);
  170. }
  171. continue;
  172. case "GetLobbies":
  173. Console.WriteLine("GetLobbies\n");
  174. GetLobbies(clientStream, username);
  175. continue;
  176. default:
  177. Console.WriteLine("invalid! " + client_msg + "\n");
  178. buffer = encoder.GetBytes("invalid");
  179. clientStream.Write(buffer, 0, buffer.Length);
  180. continue;
  181.  
  182. }
  183. #endregion
  184. #endregion
  185.  
  186.  
  187. }
  188. //message has successfully been received
  189. //ASCIIEncoding encoder = new ASCIIEncoding();
  190. //Console.WriteLine(encoder.GetString(message, 0, bytesRead));
  191. }
  192.  
  193. tcpClient.Close();
  194. }
  195.  
  196. private void sendData(TcpClient soc, String strData)
  197. {
  198. try
  199. {
  200.  
  201. if (soc.Connected && soc.Client.Poll(3000, SelectMode.SelectWrite))
  202. {
  203. {
  204. char c = (char)0;
  205. byte[] msg = System.Text.Encoding.ASCII.GetBytes(strData + c);
  206. int i = soc.Client.Send(msg, 0, msg.Length, SocketFlags.None);
  207. }
  208. }
  209. else
  210. {
  211.  
  212. }
  213. }
  214. catch (Exception ex)
  215. {
  216.  
  217. }
  218.  
  219. }
  220.  
  221. private void startGame(NetworkStream clientStream, int current_lobby)
  222. {
  223.  
  224. Console.WriteLine("startGame area");
  225. byte[] buffer;
  226. ASCIIEncoding encoder = new ASCIIEncoding();
  227. buffer = encoder.GetBytes("gamestart");
  228. Console.WriteLine("gamestart");
  229. clientStream.Write(buffer, 0, buffer.Length);
  230. bool gotProfile = false;
  231.  
  232. List<String> player1 = new List<String>();
  233.  
  234. byte[] message = new byte[4096];
  235. int bytesRead;
  236. String client_msg = null;
  237. bool rdy = false;
  238.  
  239. #region Clients read
  240. while (true)
  241. {
  242. bytesRead = 0;
  243. try
  244. {
  245. //blocks until a client sends a message
  246. bytesRead = clientStream.Read(message, 0, 4096);
  247. Console.WriteLine(bytesRead);
  248. }
  249. catch
  250. {
  251. //a socket error has occured
  252. break;
  253. }
  254. if (bytesRead == 0)
  255. {
  256. //the client has disconnected from the server
  257. Console.WriteLine("errorr1!!!!");
  258. break;
  259. }
  260.  
  261. if (bytesRead > 0)
  262. {
  263. client_msg = encoder.GetString(message, 0, bytesRead);
  264. Console.WriteLine("rdy area");
  265. Console.WriteLine("client msg1 " + client_msg);
  266. #region client 1 rdy
  267. if (client_msg.ToLower().Equals("rdy"))
  268. {
  269. rdy = true;
  270. String command = "profile";
  271. int count = 0;
  272.  
  273. buffer = encoder.GetBytes(command);
  274. clientStream.Write(buffer, 0, buffer.Length);
  275.  
  276. while (true)
  277. {
  278.  
  279. try
  280. {
  281. //blocks until a client sends a message
  282. bytesRead = clientStream.Read(message, 0, 4096);
  283. Console.WriteLine(bytesRead);
  284. }
  285. catch
  286. {
  287. //a socket error has occured
  288. break;
  289. }
  290. if (bytesRead == 0)
  291. {
  292. //the client has disconnected from the server
  293. Console.WriteLine("errorr1!!!!");
  294. break;
  295. }
  296.  
  297. if (bytesRead > 0)
  298. {
  299.  
  300. //bytesRead = clientStream.Read(message, 0, 4096);
  301.  
  302.  
  303.  
  304. }
  305.  
  306. }
  307. gotProfile = true;
  308. }
  309. #endregion
  310.  
  311. }
  312. #endregion
  313. }
  314. }
  315.  
  316. private void HostLobby(NetworkStream clientStream, String username)
  317. {
  318. Console.WriteLine("hostlobby area");
  319. byte[] buffer;
  320. ASCIIEncoding encoder = new ASCIIEncoding();
  321. buffer = encoder.GetBytes("LobbyName");
  322. clientStream.Write(buffer, 0, buffer.Length);
  323.  
  324. byte[] message = new byte[4096];
  325. int bytesRead;
  326. String client_msg = null;
  327.  
  328. #region Client read
  329. while (true)
  330. {
  331. bytesRead = 0;
  332. try
  333. {
  334. //blocks until a client sends a message
  335. bytesRead = clientStream.Read(message, 0, 4096);
  336. Console.WriteLine(bytesRead);
  337. }
  338. catch
  339. {
  340. //a socket error has occured
  341. break;
  342. }
  343. if (bytesRead == 0)
  344. {
  345. //the client has disconnected from the server
  346. Console.WriteLine("errorr1!!!!");
  347. break;
  348. }
  349.  
  350. if (bytesRead > 0)
  351. {
  352. client_msg = encoder.GetString(message, 0, bytesRead);
  353. Console.WriteLine("hi");
  354. break;
  355. }
  356.  
  357.  
  358. }
  359. #endregion
  360. if (client_msg.Length > 0)
  361. {
  362. Console.WriteLine("hi1");
  363. //buffer = encoder.GetBytes("Next Command!");
  364. lobbies[count] = new Lobby()
  365. {
  366. objectNumber = count,
  367. players = 1,
  368. tcpPlayer1 = clientStream,
  369. lobby_name = client_msg
  370.  
  371. };
  372. lobbies[count].tcpPlayer1 = clientStream;
  373. int current_lobby = count;
  374. count++;
  375. #region waiting for game start alive statements
  376. while (true)
  377. {
  378. buffer = encoder.GetBytes("alive");
  379. try
  380. {
  381. lobbies[current_lobby].tcpPlayer1.Write(buffer, 0, buffer.Length);
  382. #region Clientread
  383. while (true)
  384. {
  385. bytesRead = 0;
  386. try
  387. {
  388. //blocks until a client sends a message
  389. bytesRead = clientStream.Read(message, 0, 4096);
  390. Console.WriteLine(bytesRead);
  391. }
  392. catch
  393. {
  394. //a socket error has occured
  395. break;
  396. }
  397. if (bytesRead == 0)
  398. {
  399. //the client has disconnected from the server
  400. Console.WriteLine("errorr1!!!!");
  401. break;
  402. }
  403.  
  404. if (bytesRead > 0)
  405. {
  406. client_msg = encoder.GetString(message, 0, bytesRead);
  407. if ((client_msg == "alive") && (lobbies[current_lobby].ready))
  408. {
  409. //game start stuff?
  410. startGame(lobbies[current_lobby].tcpPlayer1, i);
  411. }
  412. else
  413. {
  414. buffer = encoder.GetBytes("alive");
  415. lobbies[current_lobby].tcpPlayer1.Write(buffer, 0, buffer.Length);
  416. Console.WriteLine("alive recieved");
  417. }
  418.  
  419. }
  420. }
  421. }
  422. catch (Exception ex)
  423. {
  424. Console.WriteLine(ex);
  425. break;
  426. }
  427.  
  428. #endregion
  429. }
  430. #endregion
  431.  
  432. }
  433. }
  434.  
  435. private void GetLobbies(NetworkStream clientStream, String username)
  436. {
  437. Console.WriteLine("GetLobbies area");
  438. byte[] buffer;
  439. byte[] buffer1;
  440. ASCIIEncoding encoder = new ASCIIEncoding();
  441. buffer = encoder.GetBytes("LobbyName");
  442. clientStream.Write(buffer, 0, buffer.Length);
  443.  
  444. byte[] message = new byte[4096];
  445. int bytesRead;
  446. String client_msg = null;
  447.  
  448. if (count == 0)
  449. {
  450. buffer = encoder.GetBytes("no_lobbies");
  451. clientStream.Write(buffer, 0, buffer.Length);
  452. }
  453. else
  454. {
  455. buffer = encoder.GetBytes("enum_lobbies_EOF");
  456. int i = 0;
  457. String lobby_list;
  458.  
  459. while (i < count)
  460. {
  461. lobby_list = "Lobby name: " + lobbies[i].lobby_name + " number of players: " + lobbies[i].players + " Lobbie number: " + lobbies[i].objectNumber + "\n";
  462. Console.WriteLine(lobby_list);
  463. buffer1 = encoder.GetBytes(lobby_list);
  464. clientStream.Write(buffer1, 0, buffer1.Length);
  465. i++;
  466. }
  467. clientStream.Write(buffer, 0, buffer.Length);
  468.  
  469. #region Client read
  470. while (true)
  471. {
  472. bytesRead = 0;
  473. try
  474. {
  475. //blocks until a client sends a message
  476. bytesRead = clientStream.Read(message, 0, 4096);
  477. Console.WriteLine(bytesRead);
  478. }
  479. catch
  480. {
  481. //a socket error has occured
  482. break;
  483. }
  484. if (bytesRead == 0)
  485. {
  486. //the client has disconnected from the server
  487. Console.WriteLine("errorr1!!!!");
  488. break;
  489. }
  490.  
  491. if (bytesRead > 0)
  492. {
  493. client_msg = encoder.GetString(message, 0, bytesRead);
  494. Console.WriteLine("Join lobby command " + client_msg);
  495. switch (client_msg.ToLower())
  496. {
  497. case "join":
  498. ///blah
  499. buffer1 = encoder.GetBytes("lobbynum");
  500. clientStream.Write(buffer1, 0, buffer1.Length);
  501. #region Read from client
  502. while (true)
  503. {
  504. bytesRead = 0;
  505. try
  506. {
  507. //blocks until a client sends a message
  508. bytesRead = clientStream.Read(message, 0, 4096);
  509. Console.WriteLine(bytesRead);
  510. }
  511. catch
  512. {
  513. //a socket error has occured
  514. break;
  515. }
  516. if (bytesRead == 0)
  517. {
  518. //the client has disconnected from the server
  519. Console.WriteLine("errorr1!!!!");
  520. break;
  521. }
  522.  
  523. if (bytesRead > 0)
  524. {
  525. client_msg = encoder.GetString(message, 0, bytesRead);
  526. Console.WriteLine("Join Lobby: " + client_msg);
  527. i = 0;
  528. while (i < count)
  529. {
  530. try
  531. {
  532. if (lobbies[i].objectNumber == Convert.ToInt32(client_msg))
  533. {
  534. buffer1 = encoder.GetBytes("joined lobby: " + lobbies[i].objectNumber);
  535. Console.WriteLine("i'm here!");
  536. clientStream.Write(buffer1, 0, buffer1.Length);
  537. lobbies[i].ready = true;
  538. lobbies[i].tcpPlayer2 = clientStream;
  539. lobbies[i].players = 2;
  540. lobbies[i]
  541. //lobbies[i].start_game();
  542. startGame(lobbies[i].tcpPlayer2, i);
  543. lobbies[i].ready = true;
  544.  
  545. }
  546. }
  547. catch (Exception ex)
  548. {
  549. Console.WriteLine(ex);
  550.  
  551. }
  552. i++;
  553. }
  554. buffer1 = encoder.GetBytes("unable to join lobby");
  555. try
  556. {
  557. clientStream.Write(buffer1, 0, buffer1.Length);
  558. }
  559. catch (Exception ex)
  560. {
  561. Console.WriteLine(ex);
  562. }
  563. }
  564. }
  565. #endregion
  566. break;
  567. case "GetLobbies":
  568. break;
  569. default:
  570. buffer1 = encoder.GetBytes("invalid");
  571. clientStream.Write(buffer1, 0, buffer1.Length);
  572. continue;
  573.  
  574. }
  575. }
  576. #endregion
  577. }
  578. }
  579. }
  580.  
  581. private String Login(NetworkStream clientStream)
  582. {
  583. MySqlConnection conn = database();
  584. Console.WriteLine("Login Screen");
  585. byte[] buffer;
  586. byte[] buffer1;
  587. ASCIIEncoding encoder = new ASCIIEncoding();
  588. buffer = encoder.GetBytes("UserName");
  589. clientStream.Write(buffer, 0, buffer.Length);
  590. bool un = false;
  591. byte[] message = new byte[4096];
  592. int bytesRead;
  593. String client_msg = null;
  594.  
  595. //buffer = encoder.GetBytes("enum_lobbies_EOF");
  596. int i = 0;
  597. while (true)
  598. {
  599. bytesRead = 0;
  600. try
  601. {
  602. //blocks until a client sends a message
  603. bytesRead = clientStream.Read(message, 0, 4096);
  604. Console.WriteLine(bytesRead);
  605. }
  606. catch
  607. {
  608. //a socket error has occured
  609. break;
  610. }
  611. if (bytesRead == 0)
  612. {
  613. //the client has disconnected from the server
  614. Console.WriteLine("errorr1!!!!");
  615. break;
  616. }
  617. #region username and password
  618. if (bytesRead > 0)
  619. {
  620. client_msg = encoder.GetString(message, 0, bytesRead);
  621. String client_cmd = client_msg;
  622. Console.WriteLine("login");
  623. switch (client_msg.ToLower())
  624. {
  625. case "username":
  626. ///blah
  627. buffer1 = encoder.GetBytes("send username");
  628. clientStream.Write(buffer1, 0, buffer1.Length);
  629. #region Read from client
  630. while (true)
  631. {
  632. bytesRead = 0;
  633. try
  634. {
  635. //blocks until a client sends a message
  636. bytesRead = clientStream.Read(message, 0, 4096);
  637. Console.WriteLine(bytesRead);
  638. }
  639. catch
  640. {
  641. //a socket error has occured
  642. break;
  643. }
  644. if (bytesRead == 0)
  645. {
  646. //the client has disconnected from the server
  647. Console.WriteLine("errorr1!!!!");
  648. break;
  649. }
  650.  
  651. if (bytesRead > 0)
  652. {
  653. client_msg = encoder.GetString(message, 0, bytesRead);
  654. Console.WriteLine("User name: " + client_msg);
  655. i = 0;
  656. MySqlCommand command = conn.CreateCommand();
  657. MySqlDataReader reader;
  658.  
  659. #region username
  660. Console.WriteLine("i'm here!");
  661. command.CommandText = "Select * from user Where UserName='" + client_msg + "'";
  662.  
  663. try
  664. {
  665. conn.Open();
  666. reader = command.ExecuteReader();
  667. Console.WriteLine("i'm here!2");
  668. while (reader.Read()) //take the sql and make sure the username exists
  669. {
  670. Console.WriteLine("i'm here!3");
  671. Console.WriteLine(reader["UserName"] + " : " + client_msg);
  672. String result = reader["UserName"].ToString();
  673. if (client_msg.Equals(result, StringComparison.Ordinal))
  674. {
  675. Console.WriteLine("woot! matching username!");
  676. buffer1 = encoder.GetBytes("send password");
  677. clientStream.Write(buffer1, 0, buffer1.Length);
  678. try
  679. {
  680. //conn.Open();
  681. //reader.Close();
  682. //reader = command.ExecuteReader();
  683. while (true)
  684. {
  685. bytesRead = 0;
  686. try
  687. {
  688. //blocks until a client sends a message
  689. bytesRead = clientStream.Read(message, 0, 4096);
  690. Console.WriteLine(bytesRead);
  691. }
  692. catch
  693. {
  694. //a socket error has occured
  695. break;
  696. }
  697. if (bytesRead == 0)
  698. {
  699. //the client has disconnected from the server
  700. Console.WriteLine("errorr1!!!!");
  701. break;
  702. }
  703.  
  704. if (bytesRead > 0)
  705. {
  706. client_msg = encoder.GetString(message, 0, bytesRead);
  707. String password = reader["Password"].ToString();
  708. Console.WriteLine("password: " + client_msg + " : " + password);
  709. if (password.Equals(client_msg, StringComparison.Ordinal))
  710. {
  711. Console.WriteLine("woot! matching password!");
  712. buffer1 = encoder.GetBytes("login_suc");
  713. clientStream.Write(buffer1, 0, buffer1.Length);
  714. return reader["UserName"].ToString();
  715. // do some profile stuff here?
  716. break;
  717. }
  718. else
  719. {
  720. return "INVALID";
  721. }
  722.  
  723. }
  724. }
  725. break;
  726.  
  727. }
  728. catch (Exception ex)
  729. {
  730. Console.WriteLine(ex);
  731. }
  732. }
  733. }
  734. break;
  735.  
  736. }
  737. catch (Exception ex)
  738. {
  739. Console.WriteLine(ex);
  740. }
  741.  
  742. #endregion
  743.  
  744.  
  745.  
  746. }
  747. }
  748. #endregion
  749. break;
  750. default:
  751. buffer1 = encoder.GetBytes("invalid");
  752. clientStream.Write(buffer1, 0, buffer1.Length);
  753. continue;
  754.  
  755. }
  756. }
  757. #endregion
  758.  
  759. break;
  760. }
  761. return "INVALID";
  762. }
  763.  
  764. private void UpdateProfile(NetworkStream clientStream, String username)
  765. {
  766.  
  767. }
  768.  
  769. private void GetProfile(NetworkStream clientStream, String username)
  770. {
  771.  
  772. }
  773.  
  774. //Player client1 = new Player();
  775. //Player client2 = new Player();
  776.  
  777.  
  778.  
  779.  
  780. private static void Main(string[] args)
  781. {
  782. Server derp = new Server();
  783. derp.Server_start();
  784. //derp.database();
  785.  
  786. }
  787.  
  788. }
  789. }
Add Comment
Please, Sign In to add comment