using UnityEngine;
using System.Collections;
using System;
using System.Net;
using System.IO;
using System.Net.Sockets;
using System.Text;
using System.Threading;
public class LoginCore : MonoBehaviour {
public string serverAddress = "127.0.0.1";
public int serverPort = 32211;
private TcpClient _client;
private NetworkStream _stream;
private Thread _thread;
private byte[] _buffer = new byte[1024];
private string receiveMsg = "";
private bool isConnected = false;
private bool connectionError = false;
private float connectionTimer = 0.0f;
void Start() {
SetupConnection();
}
void OnApplicationQuit() {
CloseConnection();
}
void OnGUI() {
if(connectionError) {
GUI.Label(new Rect(10,10,250,25), "Time to reconnect: "+connectionTimer.ToString()+" of 15 s");
if(connectionTimer >= 15.0f) {
connectionError = false;
connectionTimer = 0.0f;
SetupConnection();
} else {
connectionTimer += Time.deltaTime;
}
} else if(isConnected) {
if(GUI.Button(new Rect(10,10,250,25), "LOGIN"))
SendData("0x000/Testuser/Testpassword");
}
}
private void SetupConnection() {
try {
_thread = new Thread(ReceiveData);
_thread.IsBackground = true;
_client = new TcpClient(serverAddress, serverPort);
_stream = _client.GetStream();
_thread.Start();
isConnected = true;
} catch (Exception e) {
CloseConnection();
connectionError = true;
Debug.Log(e.ToString());
}
}
private void ReceiveData() {
if(!isConnected)
return;
int numberOfBytesRead = 0;
while(isConnected && _stream.CanRead) {
try {
numberOfBytesRead = _stream.Read(_buffer, 0, _buffer.Length);
receiveMsg = Encoding.ASCII.GetString(_buffer, 0, numberOfBytesRead);
_stream.Flush();
Debug.Log(receiveMsg);
receiveMsg = "";
} catch (Exception e) {
CloseConnection();
Debug.Log(e.ToString());
}
}
}
private void CloseConnection() {
if(isConnected) {
_thread.Interrupt();
_stream.Close();
_client.Close();
isConnected = false;
receiveMsg = "";
}
}
private void SendData(string msgToSend) {
byte[] bytesToSend = Encoding.ASCII.GetBytes(msgToSend);
if(_stream.CanWrite)
_stream.Write(bytesToSend, 0, bytesToSend.Length);
}
}
Comments
0 B
|👍
/👎