Witam mam taki problem chciałem napisać klienta który będzie na serwer wysyłał pewne dane a jak nie ma połączenia będzie pokazywał - próba 1,2,3.
Próbowałem użyć while ale tak jak w konsoli chodziło tak przy forms się zawieszało, stwierdziłem trudno spróbuję to zrobić przez timer i nowy wątek niestety nie działa pokazuje w forms tylko Server uruchomiony - dla ułatwienia podaje cały kod może ktoś pomoże, please już drugi dzień nad tym siedzę.
public partial class Form1 : Form
{
IPEndPoint koniec;
Socket gniazdo;
System.Timers.Timer timer_count;
int amount_client = 0;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//int amount_client = 0;
//TcpListener server_1 = new TcpListener(IPAddress.Parse("192.168.2.112"), 3301);
//server_1.Start();
koniec = new IPEndPoint(IPAddress.Parse("podaje_ip"), 3301);
gniazdo = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
gniazdo.Bind(koniec);
textBox1.Text = "Server uruchomiony";
gniazdo.Listen(100);
timer_count = new System.Timers.Timer();
timer_count.Interval = 100;
timer_count.Elapsed += timer_count_Elapsed;
timer_count.Start();
}
void timer_count_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
Thread thread_new = new Thread(new ThreadStart(tray_connect));
thread_new.Start();
}
void tray_connect()
{
try
{
Socket client_socket = gniazdo.Accept();
amount_client++;
if(client_socket.Connected)
{
timer_count.Stop();
textBox1.Text = "Zgłosił się klient " + amount_client.ToString() + " o IP " + ((IPEndPoint)client_socket.RemoteEndPoint).Address.ToString();
byte[] clientdata = new byte[1024 * 2000];
int amountbyte = client_socket.Receive(clientdata);
textBox1.Text = "Odbieram plik...";
String data_client = Encoding.ASCII.GetString(clientdata);
data_client = data_client.Remove(amountbyte, data_client.Length - amountbyte);
textBox1.Text = data_client.ToString();
}
client_socket.Close();
this.Refresh();
}
catch (SocketException)
{
this.Refresh();
textBox1.Text = "Próba podłączenia " + amount_client;
Application.DoEvents();
}
catch (IOException)
{
textBox1.Text = "Przerwano pobieranie pliku";
timer_count.Start();
}
}
}