When i press play button on unity, this works like diamonds. But when i press play second time unity freezes, could threads cause this?
import System;
import System.IO;
import System.Net;
import System.Net.Sockets;
import System.Text;
import System.Threading;
var server : TcpListener;
var client : TcpClient;
var stream : NetworkStream;
var reader : StreamReader;
var writer : StreamWriter;
var msg : String;
var thread = Thread(Parse);
var UniqueHash : String;
var Running : boolean;
function Start(){
DontDestroyOnLoad(this);
}
function Update(){
if(Var.State == 1){
client = new TcpClient("127.0.0.1", 6112);
stream = client.GetStream();
reader = new StreamReader(stream);
writer = new StreamWriter(stream);
Running = true;
thread.IsBackground = true;
thread.Start();
Var.State = 2;
}
}
function OnApplicationQuit()
{
Running = false;
thread.Join(500);
Debug.Log("Thread Terminated");
}
function Send(data : String){
stream = client.GetStream();
writer.WriteLine(data);
writer.Flush();
}
function Parse()
{
try{
while(Running){
stream = client.GetStream();
if(stream.DataAvailable){
msg = reader.ReadLine();
if (msg == null){}
else
{
HandleMessage(msg);
msg = "";
}
}
else {
Thread.Sleep(100);
}
}
}
catch (ThreadAbortException)
{
print("exception");
}
}
function HandleMessage(data : String){
var Header : String;
Header = data.Substring(0,4);
switch (Header){
case "0x00" : onPacket0x00(data);
break;
case "0x01" : onPacket0x01(data);
break;
default:
print ("Unparsed packet: " + Header + " Data: " + data);
break;
}
data = "";
Header = "";
}
function onPacket0x00(data : String) {
Var.State = 3;
UniqueHash = data.Substring(4,data.Length - 4);
Debug.Log("Connected! Hash: " + UniqueHash);
Send("0x01" + UniqueHash + "/" + Var.Username + "/" + Var.Password);
}
function onPacket0x01(data : String) {
Debug.Log("Login code: " + data.Substring(4,1));
}