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

Форум программистов: 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 сообщение ] 


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

Зарегистрированные пользователи: нет зарегистрированных пользователей


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

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