TCP/IP Unity Android ERROR Helfe

Hey all I am making a android game using unity3d, I want to control my game from my laptop I made a TCP/IP chat like program to get the input from my keyboard to my android over internet I made one for my Laptop (Windows form APP) and one for Unity, everything works except for one little annoying error.

ERROR: I want when I press the X button to move a sphere from point A to point B but when send the “x” value it says :

INTERNAL_get_position can only be
called from the main thread.
Constructors and field initializers
will be executed from the loading
thread when loading a scene. Don’t use
this function in the constructor or
field initializers, instead move
initialization code to the Awake or
Start function.

and when I close the Windows form APP the ball then moves what to do I tried the Awake and the start functions too.

PS: I am testing this on the same computer so its not about the IPAddresses.

here is my code for the unity part:

    using UnityEngine;
        using System.Collections;
        using System.Text;
        using System;
        using System.Net;
        using System.Net.Sockets;
        public class CHAT : MonoBehaviour {
   

     private Socket sck;
        EndPoint epLocal, epRemote;
    
        //Gameobjects
       public Transform ball , point;
        //logic
      static Boolean arreivedX = false;
       string xIsHere;
    	// Use this for initialization
    	void Start () {
            
        sck = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
        sck.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
        epLocal = new IPEndPoint(IPAddress.Parse("192.168.1.9"), Convert.ToInt32("81"));
        sck.Bind(epLocal);
        epRemote = new IPEndPoint(IPAddress.Parse("192.168.1.9"), Convert.ToInt32("80"));
        sck.Connect(epRemote);
        Debug.Log("COnnected");
        byte[] buffer = new byte[1500];
        sck.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref epRemote, new AsyncCallback(MessageCAllBack), buffer);
  
	}

    void Awake()
    {
       
        
    }
	
	// Update is called once per frame
	void Update () {

        if (arreivedX)
        {
            ball.position = Vector3.MoveTowards(ball.position, point.position, 5 * Time.deltaTime);
            
        }
	}

  private void MessageCAllBack(IAsyncResult aResult)
    {
        try
        {
            int size = sck.EndReceiveFrom(aResult, ref epRemote);

            if (size > 0)
            {
                byte[] receivedData = new byte[1464];
                receivedData = (byte[])aResult.AsyncState;

                ASCIIEncoding eEncoding = new ASCIIEncoding();
                string receivedMessage = eEncoding.GetString(receivedData);
               //bn3mal if statement bnshof weslat el X wela la2 w iza weslat bnmasi el tabeh
               
                if (receivedMessage.Contains("x"))
                {
                    Debug.Log("X is here");
                   
                    arreivedX = true;
                   
                }
               
                //b3deen bntba3 el msg bs b7aletna bdna n5li el touch active.
                //ListMessage.Items.Add("Sender:" + receivedMessage);
            }

            byte[] buffer = new byte[1500];
            sck.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref epRemote, new AsyncCallback(MessageCAllBack), buffer);

        }
        catch(Exception exp)
        {
            Debug.Log(exp.ToString());
        }

    }
    
}

http://stackoverflow.com/questions/32605647/tcp-ip-unity-android-error-helfe