Форум программистов CodeGuru
16 Январь 2018, 23:12:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Отправка по сети не строки, а файла  (Прочитано 14916 раз)
0 Пользователей и 1 Гость смотрят эту тему.
InIn
Пользователь
***
Офлайн Офлайн

Сообщений: 52


Просмотр профиля
« : 09 Апрель 2009, 16:58:18 »

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

Серверная часть программы:
Код:
…………………………
//Получение данных
ret = recv(sock, szRecvBuff, 1024, 0);
……………………………………………
//Подготовка строки для отправки клиенту
szBuff = " Command get OK ";
strcpy(szBuff, " Command get OK ");

int nSendSize = sizeof(szBuff);
int iCurrPos = 0;

while(nSendSize > 0)
{
int ret = send(sock, &szBuff[iCurrPos], nSendSize, 0);
if(ret == 0)
break;
else
if(ret == SOCKET_ERROR)
{
//Произошла ошибка
MessageBox(0, "Send filed", "Error", 0);
break;
}
nSendSize -= ret;
iCurrPos += ret;
}

Клиентская часть программы (другой компьютер):
Код:
………………….
strcpy(szMessage, "get");
strcpy(szServerName, "168.192.123.15");

sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
………………………………………
ret = send(sClient, szMessage, strlen(szMessage), 0);
………………………………………
//Получение данных, т.е. строки
char szBuff[4096];
int nSendSize = 1000000; //Размер данных
int iCurrPos = 0;

while(nSendSize > 0)
{
ret = recv(sClient, &szBuff[iCurrPos], nSendSize, 0);
if(ret == 0)
break;
else
if(ret == SOCKET_ERROR)
{
//Произошла ошибка
MessageBox(0, "Send filed1", "Error", 0);
break;
}
nSendSize -= ret;
iCurrPos += ret;
}
MessageBox(0, szBuff, "Recived data", 0); //Здесь выводится окно со строкой               « Command get OK »

closesocket(sClient);

Код для отправки строки (по локальной сети).
Пожалуйста, подскажите (хотя бы функцию, CopyFile не работает), как переделать код, что бы отправить файл. У меня Visual Studio.NET 2003 без NSDN.

Спасибо.
Записан
3V
Администратор
Ветеран
*****
Офлайн Офлайн

Сообщений: 1347



Просмотр профиля WWW
« Ответ #1 : 21 Апрель 2009, 00:45:51 »

1. Имхо, тут серверный код назван клиентским и наоборот.
2. Передать файл - также как и строку. Читать файл кусками, в буфер, этот буфер передавать. На другом "конце" также кусками получать и писать в файл. Код для отправки буфера уже есть.
Записан

InIn
Пользователь
***
Офлайн Офлайн

Сообщений: 52


Просмотр профиля
« Ответ #2 : 23 Апрель 2009, 13:44:34 »

1. Имхо, тут серверный код назван клиентским и наоборот.
Как Вы это определили (по-моему все верно)?
Спасибо за советы.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!