Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using System.Net.Sockets;
- namespace PoloczenieTCPKlient
- {
- public partial class Form1 : Form
- {
- public static Timer t = new Timer();
- public static Timer t2 = new Timer();
- public NetworkStream ns = null;
- public NetworkStream ctrl_ns = null;
- public TcpClient klient = null;
- public TcpClient ctrl_klient = null;
- public Form1()
- {
- InitializeComponent();
- t.Interval = 100; //wartość timera wysyłającego komuniakty
- t.Tick += new EventHandler(this.komunikaty); //metoda wysyłana przez timer
- t2.Interval = 200; //wartość timera wysyłającego komuniakty
- t2.Tick += new EventHandler(this.endack); //metoda wysyłana przez timer
- }
- private void button1_Click(object sender, EventArgs e)
- {
- string host = textBox1.Text;
- int port = System.Convert.ToInt16(numericUpDown1.Value);
- try
- {
- klient = new TcpClient(host, port);
- ctrl_klient = new TcpClient(host, port+1);
- listBox1.Items.Add("Nawiązano połączenie z " + host + " na porcie: " + port);
- ns = klient.GetStream(); //Pobranie referencji do obiektu strumienia
- ctrl_ns = ctrl_klient.GetStream(); //Pobranie referencji do obiektu strumienia
- }
- catch(Exception ex)
- {
- listBox1.Items.Add("Błąd: Nie udało się nawiązać połączenia!");
- MessageBox.Show(ex.ToString()); // wyświetlenie iformacji o błędzie połączenia
- }
- t.Start();//start timera (wartości w konstruktorze)
- }
- private void komunikaty(object sender, EventArgs e)
- {
- if (ns.DataAvailable)
- {
- //tablice na dane przychodzące i wychodzące
- byte[] inbytes = new byte[1024];
- //Wysyłanie i odbieranie danych
- ns.Read(inbytes, 0, inbytes.Length);
- //Konwersja danych odebranych do postaci łańcucha znaków
- string tekst = Encoding.ASCII.GetString(inbytes);
- //Wyświetlenie łańcucha znaków
- listBox1.Items.Add("Odebrano: " + tekst);
- ns.Flush();
- //potwierdzenie
- //tablice na dane przychodzące i wychodzące
- byte[] outbytes = Encoding.ASCII.GetBytes("ok");
- //Wysyłanie i odbieranie danych
- ns.Write(outbytes, 0, outbytes.Length);
- }
- }
- private void button2_Click(object sender, EventArgs e)
- {
- //tablice na dane przychodzące i wychodzące
- byte[] outbytes = Encoding.ASCII.GetBytes("END");
- //Wysyłanie i odbieranie danych
- ctrl_ns.Write(outbytes, 0, outbytes.Length);
- listBox1.Items.Add("wysłano: END");
- t2.Start();
- }
- private void endack(object sender, EventArgs e)
- {
- if (ctrl_ns.DataAvailable)
- {
- //tablice na dane przychodzące i wychodzące
- byte[] inbytes = new byte[1024];
- //Wysyłanie i odbieranie danych
- ctrl_ns.Read(inbytes, 0, inbytes.Length);
- //Konwersja danych odebranych do postaci łańcucha znaków
- string tekst = Encoding.ASCII.GetString(inbytes);
- if (tekst.IndexOf("ENDACK") != -1)
- {
- ctrl_ns.Flush();
- listBox1.Items.Add("odebrano: ENDACK");
- //tablice na dane przychodzące i wychodzące
- byte[] outbytes = Encoding.ASCII.GetBytes("ACKOK");
- //Wysyłanie i odbieranie danych
- ctrl_ns.Write(outbytes, 0, outbytes.Length);
- listBox1.Items.Add("wysłano: ACKOK");
- klient.Close();
- ctrl_klient.Close();
- t.Stop();
- t2.Stop();
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement