Передача файлов c#

программирование C# socket

Здравствуйте.

Написал клиент-серверное приложение по отсылке файлов. Пока одновременно подключиться к серверу может только один клиент. Как можно это реализовать для нескольких клиентов? Я примерно понимаю, что нужно все через потоки делать, но что именно пихать в поток я не знаю.

Код сервера:

http://rghost.ru/44920403

P.S.: также приму критику по самому коду

Заранее благодарен!
Ответы:
Все Begin* функции и так создают потоки, нужно лишь обеспечить уникальное имя файла и вызвать снова BeginAccept в функции AcceptCallback. По поводу самого кода, есть вероятность, что в предпоследнем блоке будет передано "<EO", а в следующем "F>", ну или любой другой вариант с разрывом ключевого слова. Ещё есть вероятность, что в самом файле встретится последовательность "<EOF>". Я бы на твоём месте отправил бы длину перед файлом или вариант похуже, отправить какое-то уникальную последовательность которой точно нет в файле, так сделано в MIME. Уникальность можно обеспечить так:
public class StateObject
{
   public static int StaticCount = 0;
   public int Count;
   public FileStream f;
   public StateObject()
   {
       Count = Interlocked.Increment(ref StaticCount);
       f = new FileStream(string.Format(@"C:\{0}.avi", Count), FileMode.OpenOrCreate);
   }
}
Ну и желательно этот Count выводить в сообщениях в консоль. Так же следует учитывать, что в реальной сети бывают обрывы связи, что приведёт к долгому ожиданию и рано или поздно вызовет исключение.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.