// Public public void Connect(string hostname, int port) { if (mxState == NFNetState.Connected) { return; } mxState = NFNetState.Connecting; mxMessages.Clear(); mxEvents.Clear(); mxClient = new TcpClient(); mxClient.BeginConnect(hostname, port, new AsyncCallback(ConnectCallback), mxClient); }
private void ReadData() { bool endOfStream = false; while (!endOfStream) { int bytesRead = 0; byte[] bytes = new byte[bufferSize]; try { bytesRead = mxStream.Read(bytes, 0, bufferSize); } catch (Exception e) { e.ToString(); } if (bytesRead == 0) { endOfStream = true; } else { lock (mxEvents) { mxEvents.Enqueue(NFNetEventType.DataReceived); } lock (mxPackets) { mxPackets.Enqueue(new NFSocketPacket(bytes, bytesRead)); } } } mxState = NFNetState.Disconnected; mxClient.Close(); lock (mxEvents) { mxEvents.Enqueue(NFNetEventType.Disconnected); } }
// Public public void Connect(string hostname, int port) { if (mxState == NFNetState.Connected) { return; } NFLog.Instance.Log(NFLog.LOG_LEVEL.DEBUG, "Start connect to: " + hostname + " " + port); mxState = NFNetState.Connecting; mxMessages.Clear(); mxEvents.Clear(); mxClient = new TcpClient(); mxClient.BeginConnect(hostname, port, new AsyncCallback(ConnectCallback), mxClient); }
private void SetTcpClient(TcpClient tcpClient) { mxClient = tcpClient; if (mxClient.Connected) { mxStream = mxClient.GetStream(); mxReader = new StreamReader(mxStream); mxWriter = new StreamWriter(mxStream); mxState = NFNetState.Connected; mxEvents.Enqueue(NFNetEventType.Connected); mxReadThread = new Thread(ReadData); mxReadThread.IsBackground = true; mxReadThread.Start(); } else { mxState = NFNetState.Disconnected; } }
public void Disconnect() { mxState = NFNetState.Disconnected; try { if (mxReader != null) { mxReader.Close(); } } catch (Exception e) { e.ToString(); } try { if (mxWriter != null) { mxWriter.Close(); } } catch (Exception e) { e.ToString(); } try { if (mxClient != null) { mxClient.Close(); } } catch (Exception e) { e.ToString(); } }