Advertisement
clery

Untitled

Jul 21st, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.44 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Net;
  5. using System.Net.Sockets;
  6. using System.Text;
  7. using System.Threading;
  8. using UnityEngine;
  9. using UnityEngine.UI;
  10.  
  11. public class Server : MonoBehaviour
  12. {
  13.  
  14. private TcpListener tcpListener; //This is the listener for TCP
  15. private Thread tcpListenerThread; //This is the thread that runs TCPListener
  16. private TcpClient connectedTcpClient; //This is assigned to the accepted TCPClient
  17. private List<TcpClient> connectedClients;
  18.  
  19. // CharacterManager characterManager = new CharacterManager();
  20. TestEventArgs clientDetails;
  21. int clientIDcounter = 0;
  22. private bool RUNNING = false;
  23. private int clientId;
  24. EventBus m_eventBus;
  25.  
  26. List<NetworkClientInfo> listOfClients;
  27. ServerController serverController;
  28.  
  29. public void StartListen()
  30. {
  31.  
  32. m_eventBus = EventBus.Instance;
  33. tcpListenerThread = new Thread(new ThreadStart(ListenForIncommingConnections))
  34. {
  35. IsBackground = true //
  36. }; //Assign TCPThread to new thread pointing to listenforcoming requests
  37. tcpListenerThread.Start();
  38. RUNNING = true;
  39. }
  40. public void StopListen()
  41. {
  42. try
  43. {
  44. RUNNING = false;
  45. connectedTcpClient.Close();
  46.  
  47.  
  48. connectedTcpClient.Close();
  49. }
  50. catch (Exception e)
  51. {
  52. Debug.Log(e.Message);
  53. }
  54.  
  55. // You must close the tcp listener
  56. try
  57. {
  58. tcpListener.Stop();
  59. }
  60. catch (Exception e)
  61. {
  62. Debug.Log(e.Message);
  63. }
  64. Debug.Log("Server stopped");
  65. }
  66.  
  67. private void ListenForIncommingConnections()
  68. {
  69. try
  70. {
  71. tcpListener = new TcpListener(IPAddress.Any, 7777);
  72. tcpListener.Start();
  73.  
  74. Debug.Log("Server is listening");
  75. while (RUNNING)
  76. {
  77. // Debug.Log("Running is true");
  78. connectedTcpClient = tcpListener.AcceptTcpClient();
  79. Debug.Log("Client Connected");
  80. NetworkClientInfo clientInfo = new NetworkClientInfo(connectedTcpClient, clientIDcounter)
  81. {
  82. ID = clientIDcounter
  83. };
  84. listOfClients.Add(clientInfo);
  85. clientIDcounter++;
  86. try
  87. {
  88. m_eventBus.onClientConnected(); //Call method to raise event ClientConnected
  89. }
  90. catch (Exception p)
  91. {
  92. Debug.LogError(p);
  93. }
  94. }
  95. }
  96. catch (SocketException socketException)
  97. {
  98. Debug.Log("SocketException " + socketException.ToString());
  99. }
  100. }
  101.  
  102. public void MessageClient()
  103. {
  104. if (connectedTcpClient == null)
  105. {
  106. Debug.Log("null");
  107. return;
  108. }
  109. Debug.Log("not null");
  110. try
  111. {
  112. // Get a stream object for writing.
  113. NetworkStream stream = connectedTcpClient.GetStream();
  114. if (stream.CanWrite)
  115. {
  116. string serverMessage = "This is a message from your server.";
  117. // Convert string message to byte array.
  118. byte[] serverMessageAsByteArray = Encoding.ASCII.GetBytes(serverMessage);
  119. // Write byte array to socketConnection stream.
  120. stream.WriteAsync(serverMessageAsByteArray, 0, serverMessageAsByteArray.Length);
  121. Debug.Log("Server sent his message - should be received by client");
  122. }
  123. }
  124. catch (SocketException socketException)
  125. {
  126. Debug.Log("Socket exception: " + socketException);
  127. }
  128. }
  129.  
  130.  
  131. private void HandleConnection(string message)
  132. {
  133. //Type, 0 = test
  134. string[] data = message.Split(',');
  135. switch (data[0])
  136. {
  137. case "1":
  138. MessageClient();
  139. // m_eventBus.invokeEventArgs(this, new TestEnvir());
  140. break;
  141.  
  142. case "2":
  143. Debug.Log("Sending type 2");
  144. break;
  145.  
  146. default:
  147. break;
  148. }
  149.  
  150. }
  151.  
  152. void OnApplicationQuit()
  153. {
  154. StopListen();
  155. }
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement