Файловый сервер и связанные с ним клиенты - PullRequest
0 голосов
/ 05 июня 2011

Я чрезвычайно новичок в программировании сокетов, и я реализую файловый сервер, который получает запросы, такие как open (), read (), write (), close () от клиентов.Файловый сервер будет обрабатывать запросы и отправлять клиентам возвращаемое значение каждого системного вызова.

Я не знаю, какой тип сокета мне нужно определить (т.е. сокет потока, сокет дейтаграммы и т. Д.).и какая команда отправит запрос от клиента, как я получу возвращаемое значение с сервера, как я получу его на конце сервера и отправлю возвращаемое значение моему клиенту.

Буду благодаренполучить некоторые указатели.

Спасибо

Редактирование: что-то простое, как эта работа для запуска Сервер не может правильно прочитать / открыть имя файла, отправленное клиентом в C

Ответы [ 2 ]

1 голос
/ 05 июня 2011

Частично это зависит от вашего файлового сервера.

Если вы собираетесь использовать сервер без состояния , тогда датаграмма или поток будут в порядке.Датаграмма относительно хороша, потому что вашим серверам и клиентам не нужно обрабатывать частичные запросы - все содержимое запроса содержится в дейтаграмме.

Если вы собираетесь сервер с состоянием , тогда поток может быть лучше - вы можете автоматически снимать блокировки и отменять распределение ресурсов, «принадлежащих» клиенту, когда вы получаете пакет TCP RST.(Клиент ушел, отбросьте его состояние.) Конечно, вы могли бы построить сервер с состоянием с сервисами дейтаграмм, но это не очень подходит.

Но в открытом Интернете, как правило, вы просто UDP и TCP - Я понятия не имею, если RDP , надежный транспорт дейтаграмм, маршрутизируется на данных ISP или нет.И будучи вынужден между ненадежными дейтаграммами и надежными потоками, я бы рекомендовал надежные потоки почти каждый раз.Будет ли ваш протокол использоваться только в надежных локальных сетях?Или по беспроводным или общедоступным интернет-каналам с потерями?

0 голосов
/ 05 июня 2011

Я бы использовал потоковый сокет, но другие поступили иначе, например, Сетевая файловая система (NFS).

Для связи между клиентом и сервером вам необходим протокол . Тот, который OpenSSH использует для своих scp и sftp программ, хорош для реализации. Посмотри на это. http://openssh.org/txt/draft-ietf-secsh-filexfer-02.txt

...