→ Для вступления в общество новичков и профессионалов программирования, пожалуйста нажмите здесь ...

Форум программистов: C++, Basic, Delphi, Pascal, JavaScript
Логин: Пароль:
Запомнить?  
@Mail.ru



Начать новую тему Ответить на тему  [ 1 сообщение ] 
Сокеты 
Автор Сообщение
Начинающий
Аватара пользователя

Регистрация: 26.12.2010
Сообщения: 1
Языки:
Специальность:

Репутация: 0 [ ? ]
Сообщение Сокеты
У меня есть программа,в которой клиент передает на сервер файл.То есть,для этого он сначала передаёт имя файла,а затем его размер.Это всё работает,но теперь мне нужно,чтобы пользователь вводил путь файла,то есть место, в которое сервер должен будет сохранить этот файл.Посоветовали склеить строку ввода пути и имя файла,но ничего не получается!!
Вот код клиента:
#include <stdio.h>
#include <conio.h>
#include <winsock.h>
#include <string.h>
#define SERV_PORT 5000
#include <sys\stat.h>
void main()
{
WSADATA WSAData;
int rc;
rc = WSAStartup (MAKEWORD(1, 1), &WSAData);
if(rc != 0)
{
printf("WSAStartup Error");
return;
}
printf("Server use %s %s", WSAData.szDescription, WSAData.szSystemStatus);
SOCKET clt_socket;
clt_socket = socket(AF_INET, SOCK_DGRAM, 0); // Створення сокету
if(clt_socket == INVALID_SOCKET)
{
printf("socket Error");
return;
}
SOCKADDR_IN clt_address, new_address; //оголошення переменной под адрес
clt_address.sin_family = AF_INET; //адресация Интернета
clt_address.sin_port = htons(SERV_PORT); //указиваем порт
clt_address.sin_addr.s_addr = inet_addr ("127.0.0.1"); //адрес машишы-сервера
struct stat statbuf;
FILE *f;
int a=sizeof(new_address);
int filesize;
char fileName[100];
char b[100];
char *p=new char[1024];
char *filedata=new char[1024];
for(;
{
printf("\n,imya faila");
gets(fileName);
printf("\n,shlax");
gets(b);
strcat(b,fileName);
sendto(clt_socket,b,100,0, (SOCKADDR*)&clt_address, sizeof(new_address)
strcat(fileName, &statbuf);
filesize=statbuf.st_size;
sendto(clt_socket,(char*)&filesize,4,0, (SOCKADDR*)&clt_address, sizeof(new_address));
f=fopen(fileName,"rb");
for(int i=1; i<=filesize/1024;i++)
{fread(filedata,1024,1,f);
sendto(clt_socket,filedata,1024,0, (SOCKADDR*)&clt_address, sizeof(new_address));
recvfrom(clt_socket,p,1024,0, (SOCKADDR*)&new_address, &a);//podtvergdenie prioma
/*printf("%s",filedata);*/
}
if((filesize%1024)>0)
{fread(filedata,filesize%1024,1,f);
sendto(clt_socket,filedata,1024,0, (SOCKADDR*)&clt_address, sizeof(new_address));}
fclose(f);
}
closesocket (clt_socket); // видалення сокету
delete []filedata;
WSACleanup();
//getch();
}


26.12.2010 13:37
Профиль Отправить email
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 


Кто сейчас на конференции

Зарегистрированные пользователи: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
cron
© 2013 «Форум программистов Украины»