// This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. // To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ // or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. using System; using System.Collections; using System.Collections.Generic; using System.Net.Sockets; using System.Text; using System.Threading; using UnityEngine; public class TCPTestClient : MonoBehaviour { #region private members private TcpClient socketConnection; private Thread clientReceiveThread; #endregion // Use this for initialization void Start () { ConnectToTcpServer(); } // Update is called once per frame void Update () { if (Input.GetKeyDown(KeyCode.Space)) { SendMessage(); } } /// /// Setup socket connection. /// private void ConnectToTcpServer () { try { clientReceiveThread = new Thread (new ThreadStart(ListenForData)); clientReceiveThread.IsBackground = true; clientReceiveThread.Start(); } catch (Exception e) { Debug.Log("On client connect exception " + e); } } /// /// Runs in background clientReceiveThread; Listens for incomming data. /// private void ListenForData() { try { socketConnection = new TcpClient("localhost", 8052); Byte[] bytes = new Byte[1024]; while (true) { // Get a stream object for reading using (NetworkStream stream = socketConnection.GetStream()) { int length; // Read incomming stream into byte arrary. while ((length = stream.Read(bytes, 0, bytes.Length)) != 0) { var incommingData = new byte[length]; Array.Copy(bytes, 0, incommingData, 0, length); // Convert byte array to string message. string serverMessage = Encoding.ASCII.GetString(incommingData); Debug.Log("server message received as: " + serverMessage); } } } } catch (SocketException socketException) { Debug.Log("Socket exception: " + socketException); } } /// /// Send message to server using socket connection. /// private void SendMessage() { if (socketConnection == null) { return; } try { // Get a stream object for writing. NetworkStream stream = socketConnection.GetStream(); if (stream.CanWrite) { string clientMessage = "This is a message from one of your clients."; // Convert string message to byte array. byte[] clientMessageAsByteArray = Encoding.ASCII.GetBytes(clientMessage); // Write byte array to socketConnection stream. stream.Write(clientMessageAsByteArray, 0, clientMessageAsByteArray.Length); Debug.Log("Client sent his message - should be received by server"); } } catch (SocketException socketException) { Debug.Log("Socket exception: " + socketException); } } }