Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2012, 09:06   #1
mewarkin
Новичок
Джуниор
 
Регистрация: 11.10.2012
Сообщений: 1
По умолчанию Проблемы с потоками. Клиент-сервер

Здравствуйте.
Все не могу сообразить как организовать одну задачку.
Допустим есть класс сервера с прослушкой порта(бесконечный цикл).

Код:
class Server
{
	TcpListener _server;
	public string status;
	public class Server(IpAddress ip, int port)
	{
		_server = new TcpListener(ip, port);
	}
	public void sStart()
	{
		_server.Start();
		while(true)
		{
			if(_server.Pending())
			{
				status = "connected";
				_server.AcceptTcpClient();
				sendFile();
				if(!getAnswer(server.GetStream()))
				{
					sendMaterials();
				}
				//Закрываем соединение и прослушка идет дальше.
			}
			else
			{
				status = "not connected";
			}
		}
	}
	void sendFile()
	{	
		//Тут отслается файл со списком материалом с указанием даты создания
	}
	void sendMaterials()
	{
		//Тут будем отсылать материалы если версия у клиента не актуальна
	}
	bool getAnswer(NetworkStream stream)
	{
		//Парсим полученный поток
		//Если версия равны то возвращаем true
		//Если не равны возращаем false
	}
}
И есть главная форма с Label'ом в котором должно фиксироваться значение status запущенного сервера от кнопки.

Код:
private void button1_Click(object sender, EventArgs e)
{
    Int32 port = 13000;
    IPAddress localAddr = IPAddress.Parse("127.0.0.1");
    server = new Server(localAddr, port);
	new Thread(server.Start).Start();
//и вот здесь не могу сообразить что делать дальше((
}
Как бы мне реализовать чтобы Label1 обновлялся, а сервер все так же прослушивал.

Сама идея программы такова:
Есть клиент и есть сервер.
Сервер запускается и ждет клиента.
Клиент запускается и пытается сконнектиться с сервером. При коннекте сервер это фиксирут и отправлят файл клиенту. Клиент его сравнивает(проверяет версию), и отправляет ответ. Если версии разные то он качает все указанные в файле материалы(jpeg). Коннект должен быть каждые 5 секунд.
mewarkin вне форума Ответить с цитированием
Старый 12.10.2012, 14:20   #2
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Попробуй в поток поставить.

Код:
this.Invoke(new Action(delegate() { Label1.Text = status }));
coNsept вне форума Ответить с цитированием
Старый 12.10.2012, 14:21   #3
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Попробуй в поток поставить.

Код:
this.Invoke(new Action(delegate() { Label1.Text = status }));
coNsept вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отправить видео захват(с веб-Кам.) Клиент->Сервер->Клиент RODNOC Мультимедиа в Delphi 17 03.10.2010 22:31
Клиент-сервер+MySQL InterBase проблемы в подключением 2 клиентов. Vohakisa Работа с сетью в Delphi 0 21.05.2010 19:28
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? Demol Работа с сетью в Delphi 1 21.04.2009 16:18
Проблемы с потоками... Deathwatcher Общие вопросы Delphi 5 20.04.2009 12:45