Здравствуйте, keel
k> Как можно отослать файл на другой комп при помощи обычных сокетов?
k> Думаю что при помощи clientsocket1.Socket.SendStream, или
k> clientsocket1.Socket.SendBuf, но понятия не имею как это дело юзать=(
Если Вы предполагаете, что в функциях winsock (как вы их сами
называете), есть что-то типа "отправить файл", то это не верно.
Сокет предназначен для отправки массива байт. По сути сокет - это
абстрактное обозначение компьютера и программы прикладного уровня
на нем (не берем в расчет raw-сокеты). Ваша задача может иметь
несколько решений. Выбор решения зависит от ряда фактов.
С минимумом затрат можно сделать так:
Клиент коннеститься к серверу. ( кто клиент, кто сервер -
непринциписально).
Один из компов получает команду от пользователя - послать файл.
Он получает размер файла, и отправляет размер файла в первых 4 байтах
первого пакета (clientsocket1.Socket.SendBuf), остальные байты пакета
содержат первую порцию передаваемого файла (о размере порции ниже).
Второй комп получает пакет и извлекает размер файла из первых 4-х
байт. После чего принимает из сокета столько байт, сколько было
указанно.
Замечания:
1. Если Вы пользуете сокеты TCP, то данный метод гарантирует доставку
всего пакета в правильной последовательности при наличии соединения.
При этом размер одной посылки лучше устанавливать 1.2-1.4Кб
2. Если Вы пользуете UDP - нужен контроль доставки (запрос,
подтверждение и т.д.)
3. Все это работает для TCP/IP стека протоколов. (В интернете будет
работать, в локалке будет работать, с модемом нужно поступить
подругому.)
4. Модем устанавливает соединение с другим модемом и после этого
становиться "квази - прозрачным" каналом связи. Т.е. Вы пишите байт в
com-порт, а с другого конца он вываливается :). Как Вы должно быть
догадались, в этом случае никаких адресов, сокетов, пакетов и т.д.
нет. Однако достоверная доставка байта гарантируется при наличии
соединения.
5. Как установить модемное соединение? запишите в com-порт ASCII-коды
строки "ATDP 8P9282000000". Цифры - номер телефона. P - пауза. В
конце строки нужно записать в порт код #13 - "возврат коретки".
Для более подробной информации читайте MSDN и ищите в интернете
AT-команды или (что тоже самое) hayes-codes.
6. В состав ОС W98 входит программа "Сервер удаленного доступа". Эта
прога превращает модемное соединение в локальную сеть на два компа :)
Вы работаете с удаленной машиной так, как будто Вы работаете не по
модему, а по локальной сети TCP/IP.
Вот так.