/// <summary> /// Starts the TCP server and TCP client asynchronously /// </summary> protected void UnidirectionalConnectionTask() { if (!running || !autoReconnect) { return; } if ((tcpServer == null) || (tcpClient == null)) { ConfigureSockets(); } if ((tcpServer.Port != portIn) || tcpClient.Port != portOut) { ConfigureSockets(); } while (!tcpServer.Started || !tcpClient.IsOpen) { if (!tcpServer.Started) { try { tcpServer.Port = portIn; tcpServer.BufferSize = DEFAULT_BUFFER_SIZE; tcpServer.Start(); //Console("TCP Server Started"); OnStatusChanged(); } catch { //Console("Can not start Tcp Server"); } } if (!tcpClient.IsOpen) { try { tcpClient.Connect(); //Console("Local client connected to remote server"); } catch { //Console("Cannot connect with remote server"); } } if (!tcpServer.Started || !tcpClient.IsOpen) { Thread.Sleep(500); } //Thread.Sleep(500); } }
private void btnClientConnect_Click(object sender, EventArgs e) { if (!client.IsOpen) { try { int port; IPAddress address; if (!Int32.TryParse(txtClientPort.Text, out port)) { MessageBox.Show("Invalid port", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (!IPAddress.TryParse(txtClientIp.Text, out address)) { MessageBox.Show("Invalid server ip address", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } client.Port = port; client.ServerAddress = address; client.Connect(); } catch { return; } txtClientIp.AutoCompleteCustomSource.Add(txtClientIp.Text); txtClientPort.AutoCompleteCustomSource.Add(txtClientPort.Text); btnClientConnect.Text = "Disconnect"; txtClientPort.Enabled = false; txtClientInput.Enabled = true; btnClientSend.Enabled = true; txtClientIp.Enabled = false; txtClientConsole.Enabled = true; } else { try { client.Disconnect(); } catch { return; } btnClientConnect.Text = "Connect"; txtClientPort.Enabled = true; txtClientInput.Enabled = false; btnClientSend.Enabled = false; txtClientIp.Enabled = true; txtClientConsole.Enabled = false; } }