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;
- using System.Net;
- namespace PolocznieTCPSerwer
- {
- public partial class Form1 : Form
- {
- public static Timer t = new Timer();
- public static Timer t2 = new Timer();
- public static Timer t3 = new Timer();
- public NetworkStream ns = null;
- public NetworkStream ctrl_ns = null;
- public Form1()
- {
- InitializeComponent();
- t.Interval = 1000; //wartość timera wysyłającego komuniakty
- t.Tick += new EventHandler(this.komunikaty); //metoda wysyłana przez timer
- t2.Interval = 500; //wartość timera odbierającego potwierdzenia
- t2.Tick += new EventHandler(this.potwierdzenia); //metoda wysyłana przez timer
- t3.Interval = 200; //wartość timera odbierającego potwierdzenia
- t3.Tick += new EventHandler(this.koniec); //metoda wysyłana przez timer
- }
- private TcpListener serwer = null;
- private TcpClient klient = null;
- private TcpListener ctrl_serwer = null;
- private TcpClient ctrl_klient = null;
- private void label2_Click(object sender, EventArgs e)
- {
- }
- private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
- {
- }
- private void button1_Click(object sender, EventArgs e)
- {
- IPAddress adresIP = null;
- try
- {
- adresIP = IPAddress.Parse(textBox1.Text);
- }
- catch
- {
- MessageBox.Show("Błędny format adresu IP!", "Błąd");
- textBox1.Text = String.Empty;
- return;
- }
- int port = System.Convert.ToInt16(numericUpDown1.Value);
- try
- {
- serwer = new TcpListener(adresIP, port);
- serwer.Start();
- ctrl_serwer = new TcpListener(adresIP, port+1);
- ctrl_serwer.Start();
- klient = serwer.AcceptTcpClient();
- ctrl_klient = ctrl_serwer.AcceptTcpClient();
- IPEndPoint IP = (IPEndPoint)klient.Client.RemoteEndPoint;
- listBox1.Items.Add("["+IP.ToString()+"] :Nawiązano połączenie");
- button1.Enabled = false;
- button2.Enabled = true;
- }
- catch (Exception ex)
- {
- listBox1.Items.Add("Błąd inicjacji serwera!");
- MessageBox.Show(ex.ToString(), "Błąd");
- }
- t.Start();//start timera (wartości w konstruktorze)
- t2.Start();
- ns = klient.GetStream();//Pobranie referencji do obiektu strumienia
- ctrl_ns = ctrl_klient.GetStream();
- }
- private void komunikaty(object sender, EventArgs e)
- {
- //tablice na dane przychodzące i wychodzące
- byte[] outbytes = Encoding.ASCII.GetBytes("polaczenie aktywne");
- //Wysyłanie i odbieranie danych
- ns.Write(outbytes, 0, outbytes.Length);
- //Wyświetlenie łańcucha znaków
- listBox1.Items.Add("wysłano komunikat: polaczenie aktywne");
- }
- private void potwierdzenia(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(tekst);
- ns.Flush();
- }
- 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("END") != -1)
- {
- ctrl_ns.Flush();
- //tablice na dane przychodzące i wychodzące
- byte[] outbytes = Encoding.ASCII.GetBytes("ENDACK");
- //Wysyłanie i odbieranie danych
- ctrl_ns.Write(outbytes, 0, outbytes.Length);
- listBox1.Items.Add("odebrano: END");
- listBox1.Items.Add("wysłano: ENDACK");
- t.Stop();
- t2.Stop();
- t3.Start();
- }
- }
- }
- private void koniec(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("ACKOK") != -1)
- {
- listBox1.Items.Add("odebrano: ACKOK");
- t3.Stop();
- ctrl_ns.Flush();
- serwer.Stop();
- ctrl_serwer.Stop();
- listBox1.Items.Add("Zakończono pracę serwera ...");
- button1.Enabled = true;
- button2.Enabled = false;
- ns.Close();
- ctrl_ns.Close();
- }
- }
- }
- private void button2_Click(object sender, EventArgs e)
- {
- serwer.Stop();
- klient.Close();
- ctrl_serwer.Stop();
- ctrl_klient.Close();
- listBox1.Items.Add("Zakończono pracę serwera ...");
- button1.Enabled = true;
- button2.Enabled = false;
- t.Stop();
- t2.Stop();
- ns.Close();
- ctrl_ns.Close();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement