파일 서버에서 avi 파일 실행이 안되네요ㅠ
파일 서버를 만들었는데요
txt 파일 같은 것은 잘 보내지고 실행이 되는데 avi 파일은 용량이 똑같이 보내지긴 하는데 실행이 안되네요ㅠㅠ
txt 파일이랑 avi 파일이랑 근본적으로 달라서 그런지 고수님들 답변 좀 요ㅠ
server
-------------------
#include
#include
#include
#include
#include
#include
#include
#include
#define BUFSIZE 1200
#define PORT 9190
void error_handling(char *message);
int main() {
int serv_sd;
int clnt_sd;
int fd;
char buf[BUFSIZE];
struct sockaddr_in serv_addr;
struct sockaddr_in clnt_addr;
int clnt_addr_size;
int len;
serv_sd = socket(PF_INET, SOCK_STREAM, 0);
if (serv_sd == 1) {
error_handling("socket() error");
}
memset(&serv_addr, 0, sizeof (serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(PORT);
if (bind(serv_sd, (struct sockaddr*) & serv_addr, sizeof (serv_addr)))
error_handling("bind() error");
if (listen(serv_sd, 5) == -1)
error_handling("listen() error");
clnt_addr_size = sizeof (clnt_addr);
while (1) {
fd = open("brain.avi", O_RDONLY);
if (fd == -1)
error_handling("File Open error");
clnt_sd = accept(serv_sd, (struct sockaddr*) & clnt_addr, &clnt_addr_size);
if (clnt_sd == -1)
error_handling("accept() error");
// printf("%d", fd);
while ((len = read(fd, buf, BUFSIZE)) != 0) {
printf("%d\n", len);
write(clnt_sd, buf, len);
}
if (shutdown(clnt_sd, SHUT_WR) == -1)
error_handling("shutdown error");
len = read(clnt_sd, buf, BUFSIZE);
write(1, buf, len);
close(clnt_sd);
}
close(fd);
return 0;
}
void error_handling(char *message) {
fputs(message, stderr);
fputc('\n', stderr);
exit(1);
}
-------------------
client
------------------
#include
#include
#include
#include
#include
#include
#include
#include
#define BUFSIZE 1200
#define PORT 9190
#define IP "127.0.0.1"
void error_handling(char *message);
int main() {
int fd;
int sd;
const char* ip = "127.0.0.1";
char buf[BUFSIZE];
int len;
struct sockaddr_in serv_addr;
fd = open("file2.avi", O_CREAT|O_WRONLY | O_CLOEXEC | O_TRUNC);
if (fd == -1)
error_handling("File Open error");
sd = socket(PF_INET, SOCK_STREAM, 0);
if (sd == -1)
error_handling("socket error");
memset(&serv_addr, 0, sizeof (serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr(IP);
serv_addr.sin_port = htons(PORT);
if (connect(sd, (struct sockaddr*) &serv_addr, sizeof (serv_addr)) == -1)
error_handling("connect() error!");
// len = read(sd, buf, BUFSIZE);
// printf("%d", len);
while ((len = read(sd, buf, BUFSIZE)) !=0) {
printf("%d %s %d\n", fd, buf, len);
write(fd, buf, len);
printf("%d %s %d\n", fd, buf, len);
}
write(sd, "Thank You\n", 10);
close(fd);
close(sd);
return 0;
}
void error_handling(char *message) {
fputs(message, stderr);
fputc('\n', stderr);
exit(1);
}
댓글 달기