LINUX.ORG.RU

проблема с получением файла на эхо сервере

 


0

1

помогите пожалуйста дописать код для получения файла на эхо сервере. моя программа получает текст, но проблема с получением файла. надеюсь на вашу помощь потому что сдавать работу надо сегодня/завтра

листинг эхо сервера #include «common_header.h» #define PREFIX «SERVER: » #define MAX_BUFFER 4095 #define PORT 22000 #include <arpa/inet.h> #include <sys/stat.h> #include <netinet/in.h> #include <stdlib.h>

int main(int argc, char **argv) { char str[MAX_BUFFER]; /*socket for exchange data (send/recv)*/ int SocketFd;

/*a descripter socket for binding to an adress */ int listener;

struct sockaddr_in servaddr;

printf(«\n sozdaem ochered zaprosov na soedinenie \n»);

listener = socket(AF_INET, SOCK_STREAM, 0);

bzero(&servaddr, sizeof(servaddr));

servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(PORT); /* notice host to network conversion $

printf(«Bind socket \n»); bind(listener, (struct sockaddr *) &servaddr, sizeof(servaddr));

printf(«Start listen on the socket\n»); listen(listener, MAX);

printf(«create a new socket, Accept new connection (wait for it)\n»); SocketFd = accept(listener, (struct sockaddr*) NULL, NULL); printf(«Accepted\n»);

while(1) { char res;

bzero(str, MAX_BUFFER); res = read(SocketFd, str, MAX_BUFFER); if (!res) { printf(«Lost connection to the client\n»); printf(«Accept a new connection (wait for it)\n»); SocketFd = accept(listener, (struct sockaddr*) NULL, NULL); printf(«Accepted\n»); } else {

printf(«message: %s»,str);

if(strcmp(str)==0) { read(socketFd,str,MAXBUFFER)

}

write(SocketFd, str, strlen(str) + 1);

printf(«\n !!! socketFd: %d», SocketFd );

}

FILE*f; f=fopen("",«rb»); } }

листинг клиента

#include «common_header.h»

#include <arpa/inet.h> #include <sys/stat.h> #include <netinet/in.h> #include <stdlib.h> #define PREFIX «CLIENT: » #include <string.h> #define MAX_BUFFER 4095 #define PORT 22000

//10 int main(int argc, char **argv) {

int socketFd,n; char sendline[MAX_BUFFER]; char recvline[MAX_BUFFER];

struct sockaddr_in servaddr; //25 socketFd=socket(AF_INET,SOCK_STREAM, 0);

bzero(&servaddr,sizeof servaddr); servaddr.sin_family=AF_INET; servaddr.sin_port=htons(PORT);

printf(«\n preobrazuem adress»); inet_pton(AF_INET, «127.0.0.1», &(servaddr.sin_addr)); printf(«\n !!!preobrazovanie adressa proshlo uspechno»);

printf(«\n podkluchaemsa k ustroistvu, adres kotorogo ukazan v serv_$ connect(socketFd, (struct sockaddr *)&servaddr, sizeof(servaddr)); printf(»\n !!! uspesho podkluchilis\n");

char filename[] = «myfile.txt»;

struct stat maxsize;

printf(«open file \n»);

FILE *fp=fopen(«myfile.txt»,«r»);

if(fp){

stat(«myfile.txt»,&maxsize); printf(" get a size of file"); printf(«size of the file: %ld »,maxsize.st_size); int filesize=maxsize.st_size; }

while(1) { char fBuf[maxsize.st_size]; bzero(sendline, MAX_BUFFER); bzero(recvline, MAX_BUFFER);

fgets(sendline,100,stdin);

printf(«\n fgets: %s\n», sendline);

printf(«\n Write to socket: %s\n», sendline);

fread(fBuf,sizeof(char),maxsize.st_size,fp); write(socketFd,fBuf,maxsize.st_size);

write(sockfd,path,strlen(path) + 1);

write(socketFd,sendline,strlen(sendline) + 1); printf(«\n Writen: %s\n», sendline);

printf(«\n PORT: %d\n», PORT); printf(«\n socketFd: %d\n», socketFd); printf(«\n Read from socket\n»); read(socketFd,recvline, MAX_BUFFER); printf(«\n !!! Received: %s», recvline); }

}


Проиграл

Сабж.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.