using System;
using System.ComponentModel;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Net.Sockets;
using System.Net;
namespace lab4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void computeButton_Click(object sender, EventArgs e)
{
int fig;
try
{
fig = Int32.Parse(intTextBox1.Text);
}
catch (Exception)
{
MessageBox.Show("Wpisz jakąś liczbę!", "Błąd!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
backgroundWorker1.RunWorkerAsync(fig);
computeButton.Enabled = false;
intTextBox1.Enabled = false;
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
resultTextBox.Text = ((long)(e.UserState)).ToString();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
e.Result = fibonacci((int)e.Argument, worker);
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
resultTextBox.Text = e.Result.ToString();
computeButton.Enabled = true;
intTextBox1.Enabled = true;
try
{
TcpClient client = new TcpClient();
//IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 3000);
client.Connect(IPAddress.Parse("127.0.0.1"), 3000);
NetworkStream clientStream = client.GetStream();
ASCIIEncoding encoder = new ASCIIEncoding();
byte[] buffer = encoder.GetBytes(e.Result.ToString());
clientStream.Write(buffer, 0, buffer.Length);
clientStream.Flush();
}
catch (Exception)
{
MessageBox.Show("Nie ma servera :(", "Błąd!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
public long fibonacci(int n, BackgroundWorker worker)
{
long result = 1;
long prev = 0;
if (n == 0)
result = 0;
else if(n > 1)
{
long temp;
for (int i = 2; i <= n; i++)
{
temp = result;
result += prev;
prev = temp;
int percent = (int)((float)i/(float)n*100.0);
worker.ReportProgress(percent, result);
Thread.Sleep(200);
}
}
return result;
}
}
}