-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathreceiver.h
More file actions
122 lines (98 loc) · 2.82 KB
/
receiver.h
File metadata and controls
122 lines (98 loc) · 2.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
// FILE *fileNameRec(int connfd, char filename[]);
void writefile(int sockfd, char client[]);
int bindSocket(char receiver_ip[])
{
// ssize_t totalRec=0;
// WSADATA wsaData;
int sockfd ,c;
struct sockaddr_in clientaddr, serveraddr;
// FILE *fp;
//Init WinSock
sockfd = iniSocket();
memset(&serveraddr, 0, sizeof(serveraddr));
serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = inet_addr(receiver_ip);
serveraddr.sin_port = htons(SERVERPORT);
// memset(&serveraddr, 0, sizeof(ServAddr));
if (bind(sockfd, (const struct sockaddr *) &serveraddr, sizeof(serveraddr)) == -1)
{
perror("\n Bind Error");
WSACleanup();
getch();
exit(1);
}
printf("\n Binding IP and Port............");
if (listen(sockfd, LINSTENPORT) == -1)
{
perror("\n Listen Error");
WSACleanup();
getch();
exit(1);
}
printf("\n Receiver Started Listening at PORT %d............",SERVERPORT);
c = sizeof(struct sockaddr_in);
int connfd = accept(sockfd, (struct sockaddr *) &clientaddr, &c);
if (connfd == -1)
{
perror("\n Connect Error");
WSACleanup();
getch();
exit(1);
}
close(sockfd);
printf("\n Waiting For sender..............");
printf("\n Connection Accepted from Host : %s" ,inet_ntoa(clientaddr.sin_addr));
writefile(connfd, inet_ntoa(clientaddr.sin_addr));
close(connfd);
// WSACleanup();
// getch();
return 0;
}
// FILE *fileNameRec(int connfd, char filename[])
// {
// return fp;
// }
void writefile(int sockfd ,char client[])
{
ssize_t n;
char buff[MAX_LINE] = {0};
char filename[BUFFSIZE] = {0};
ssize_t totalRec =0;
FILE *fp;
if (recv(sockfd, filename, BUFFSIZE, 0) == -1)
{
perror("\n Can't receive filename");
WSACleanup();
getch();
exit(1);
}
fp = fopen(filename, "wb");
if (fp == NULL)
{
perror("\n Can't open file");
WSACleanup();
getch();
exit(1);
}
printf("\n File name Received : %s" ,filename);
printf("\n I am Started Receiving file: %s from %s\n ", filename,client );
while ((n = recv(sockfd, buff, MAX_LINE, 0)) > 0)
{
printf("\n Receiving %ld bytes file: %s from %s- -------\n ",totalRec, filename,client );
totalRec+=n;
if (n == -1)
{
perror("\n Receive File Error");
exit(1);
}
if (fwrite(buff, sizeof(char), n, fp) != n)
{
perror("\n Write File Error");
exit(1);
}
memset(buff, 0, MAX_LINE);
}
fclose(fp);
printf("\n Receive Success, NumBytes = %ld\n ", totalRec);
printf("\n File Received Successfully and Stored as: %s \n", filename);
}