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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2010, 01:16   #11
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Если код работает значит он правильный)))
но вообще смотрим:
Код:
while ((true))
            {
                try
                {
                      //фигня
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }
когда та закрываешь клиента то вылетает catch а цикл никто не останавливает...как решить думаю сам разберешься;-)
Цитата:
2) сервер не хочет работать сразу с несколькими клиентами
ну и правильно... ты смотришь порт как кто-то подключается создаешь сокет на этом порту(тк порт занят то никто больше не подключится)
dampirik вне форума Ответить с цитированием
Старый 15.02.2010, 01:37   #12
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Лови код сервера(части):
Код:
   public Server()
            {
            InitializeComponent();
            processor = new Thread(new ThreadStart(StartListening));
            processor.Start();
//создаем поток для прослушивания порта
            }
private void StartListening()
            {
            listener = new TcpListener(adrIP, listenport);//слушаем порт
            listener.Start();
            while (true)
                {
                try
                    {
                    Socket s = listener.AcceptSocket();
                    cliensocket = s;
                    clientservice = new Thread(new ThreadStart(ServiceClient));//если кто-то подцепился создаем для него поток и слушаем дальше порт
                    clientservice.Start();
                    }
                catch
                    {}
                    
                }

        private void ServiceClient()
            {
                Socket client = cliensocket;//работаем в отдельном потоке с клиентом
                try
                    {
while (true)//передаем получаем данные через сокет
                    {
                    string cliencommand = "";
                    byte[] buffer = new byte[2048];
                    try
                        {
                        cliencommand = Encoding.UTF8.GetString(buffer);
                         }
                    catch 
                        {
                        break;
                        }
                    }

Последний раз редактировалось dampirik; 15.02.2010 в 01:41.
dampirik вне форума Ответить с цитированием
Старый 15.02.2010, 11:55   #13
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

так, с потоками более менее разобрался. как я понимаю переделать этот пример под работу с файлами не очень сложно. как вообще лучше передавать? циклом побайтово или через какие-нибудь классы?
и какой алгоритм работы передачи файлов?
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 15.02.2010, 13:06   #14
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

возникла небольшая проблема с потоками. форма-то создаётся в ещё одном потоке... как достучаться до её компонентов? есть какой-нибудь способ кроме unsafe?
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 15.02.2010, 16:35   #15
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Ну файлы передают на сколько я знаю 3 способами через тсп/айпи потоком байтов
Через удп без контрольных числе и через удп с контрольными числами....
dampirik вне форума Ответить с цитированием
Старый 16.02.2010, 12:32   #16
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

считаю потоком байтов будет самое правильное + прогрессбар легко будет посчитать
алгоритм передачи попытаюсь найти и разобрать. далее понадобится консультация по поводу запросов (ну т.е. если клиент запросил файл, то начинать его отдавать и т.д.)
Life if about choices
Make the right choice

Последний раз редактировалось TaTT DoGG; 16.02.2010 в 12:35.
TaTT DoGG вне форума Ответить с цитированием
Старый 16.02.2010, 15:27   #17
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

вот так сделал передачу файла на сервер. если не менять код сервера, то видно, что какие-то данные от клиента приходят. но в верности этого кода я всё=таки не уверен. + не разобрался как на сервере собрать из переданных данных файл. помоги пожалуйста
Код:
NetworkStream serverStream = clientSocket.GetStream();
            BinaryFormatter format = new BinaryFormatter();
            byte[] buf = new byte[1024];
            int count;
            FileStream fs = new FileStream("111.txt", FileMode.Open);
            BinaryReader br = new BinaryReader(fs);
            long k = fs.Length;//Размер файла.
            format.Serialize(serverStream, k.ToString());//Вначале передаём размер
            while ((count = br.Read(buf, 0, 1024)) > 0)
            {
                format.Serialize(serverStream, buf);//А теперь в цикле по 1024 байта передаём файл             
            }
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 16.02.2010, 16:50   #18
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Ну... насколько я понял Вы передаете не сам файл, а содержимое его в виде массива байтов...ну тогда можно передать название файла... и передать его содержимое...а на другой стороне создать файл и в него записать содержимое...
ЗЫ передачу файлов я не разу не использовал) но где-то видел пример... найду покажу...
dampirik вне форума Ответить с цитированием
Старый 16.02.2010, 17:27   #19
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

буду очень благодарен
пока буду пробовать сохранять файл на сервере.
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 19.02.2010, 17:31   #20
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

временно вынужден не заниматься этим кодом. пока есть более важные задачи. но к этому вопросу мы ещё вернёмся
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Потоки, передача файлов по сети SeЯgey Работа с сетью в Delphi 3 02.04.2011 23:51
Передача файлов по сети SL1CK Работа с сетью в Delphi 3 05.12.2009 00:08
Передача файлов по сети Sparky Общие вопросы Delphi 5 31.10.2009 19:34
Передача файлов по локальной сети(Indy) Biowulf86 Помощь студентам 1 08.05.2008 13:08