1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
| // //Reverse Connection Client Listener by Paul Chin //crackinglessons.com, crackinglesson.com // v2 - suppresses the ding sound when keydown is pressed in the textbox2 // using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Net.Sockets; using System.IO; //for Streams using System.Threading; //to run commands concurrently using System.Net; //for IPEndPoint
namespace HelloClient { public partial class Form1 : Form { TcpListener tcpListener; Socket socketForServer; NetworkStream networkStream; StreamWriter streamWriter; StreamReader streamReader; StringBuilder strInput; Thread th_StartListen, th_RunClient;
public Form1() { InitializeComponent(); }
private void Form1_Shown(object sender, EventArgs e) { th_StartListen = new Thread(new ThreadStart(StartListen)); th_StartListen.Start(); textBox2.Focus(); }
private void StartListen() { tcpListener = new TcpListener(System.Net.IPAddress.Any, 6666); tcpListener.Start(); toolStripStatusLabel1.Text = "Listening on port 6666 ..."; for (; ; ) { socketForServer = tcpListener.AcceptSocket(); IPEndPoint ipend = (IPEndPoint)socketForServer.RemoteEndPoint; toolStripStatusLabel1.Text = "Connection from " + IPAddress.Parse(ipend.Address.ToString()); th_RunClient = new Thread(new ThreadStart(RunClient)); th_RunClient.Start(); } }
private void RunClient() { networkStream = new NetworkStream(socketForServer); streamReader = new StreamReader(networkStream); streamWriter = new StreamWriter(networkStream); strInput = new StringBuilder();
while (true) { try { strInput.Append(streamReader.ReadLine()); strInput.Append("\r\n"); } catch (Exception err) { Cleanup(); break; } Application.DoEvents(); DisplayMessage(strInput.ToString()); strInput.Remove(0, strInput.Length); } }
private void Cleanup() { try { streamReader.Close(); streamWriter.Close(); networkStream.Close(); socketForServer.Close(); } catch (Exception err) { } toolStripStatusLabel1.Text = "Connection Lost"; }
private delegate void DisplayDelegate(string message); private void DisplayMessage(string message) { if (textBox1.InvokeRequired) { Invoke(new DisplayDelegate(DisplayMessage), new object[] { message }); } else { textBox1.AppendText(message); } } private void textBox2_KeyDown(object sender, KeyEventArgs e) { try { if (e.KeyCode == Keys.Enter) { //-- (optional) suppresses ding sound e.SuppressKeyPress = true;
strInput.Append(textBox2.Text.ToString()); streamWriter.WriteLine(strInput); streamWriter.Flush(); strInput.Remove(0, strInput.Length); if (textBox2.Text == "exit") Cleanup(); if (textBox2.Text == "terminate") Cleanup(); if (textBox2.Text == "cls") textBox1.Text = ""; textBox2.Text = ""; } } catch (Exception err) { } }
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { Cleanup(); System.Environment.Exit(System.Environment.ExitCode); } } }
|