Klasy i wątki w c#

0

Witam. Jako programista pythona mam kilka problemów z przyzwyczajeniem się do c#.. Pisze mały program który łączy się z serwerem, ma nasłuchiwać czy serwer nic mu nie wysyła a po naciśnięciu przycisku coś wysłać do serwera. Kod aktualnie wygląda tak:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;

namespace TrClient
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public class Listen{
            public void Beta()
            {
                while (true)
                {
                    try
                    {
                        Int32 port = 800;
                        TcpClient client = new TcpClient("localhost", port);
                        string message = "bla";
                        // Translate the passed message into ASCII and store it as a Byte array.
                        Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);

                        // Get a client stream for reading and writing.
                        //  Stream stream = client.GetStream();

                        NetworkStream stream = client.GetStream();

                        // Send the message to the connected TcpServer. 

                        // Receive the TcpServer.response.

                        // Buffer to store the response bytes.
                        data = new Byte[256];

                        // String to store the response ASCII representation.
                        String responseData = String.Empty;

                        // Read the first batch of the TcpServer response bytes.
                        Int32 bytes = stream.Read(data, 0, data.Length);
                        responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
                        Console.WriteLine("Received: {0}", responseData);

                        // Close everything.
                        stream.Close();
                       
                        void SendTo()
                        {
                            this.Beta().stream.Write(data, 0, data.Length);
                            Console.WriteLine("Sent: {0}", message);
                        }
                        void Recive(){
                        }
                        
                    }
                    catch
                    {
                        MessageBox.Show("Serwer nie odpowiada :(");
                    }
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Listen rusted = new Listen();
            rusted.Beta();

        }
    }
}


Starałem się jakoś na wątkach to zrobić ale coś mi nie wychodzi. Pozdrawiam i czekam na odpowiedź :)

0

Naucz się podstaw programowania w C#, a nie wklejasz kody znalezione na jakimś forum/stronie i nie wiesz czemu nie działa.

0

Kod jest z MSDN i wiem co robi :). I kod modyfikowałem nie jest to czyste wklejenie. Starałem się napisać kawałek

this.Beta().stream.Write(data, 0, data.Length);

Lecz nie wiem jak rozmawiać z tą klasą. W pythonie wystarczy self.Zmienna w c# this tylko nie wiem jak go zastosować.
Normalnie kod z MSDN wysyła dane i czeka na odpowiedź serwera po czym ponownie wysyła i czeka na odpowiedź.
Ja chce odseparować kod odpowiedzialny za wysyłanie z kodem odpowiedzialnym za odbieranie a najlepiej umieścić kod w osobnym wątku. Nie chce by ktoś cały kod programu napisał za mnie chodzi mi tylko o komunikacje wewnątrz klasy.

0

Naucz się podstaw C#. Nie masz pojęcia jak działają klasy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1