-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathClient_ft.c
More file actions
98 lines (81 loc) · 2.42 KB
/
Client_ft.c
File metadata and controls
98 lines (81 loc) · 2.42 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
// Client.c
#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <arpa/inet.h>
#define MAXIN 20
#define MAXOUT 20
#define PACKETSIZE 15
char* readFileBytes(FILE *fl)
{
fseek(fl, 0, SEEK_END);
long len = ftell(fl);
char *ret = malloc(len);
fseek(fl, 0, SEEK_SET);
fread(ret, 1, len, fl);
fclose(fl);
return ret;
}
char *getreq(char *inbuf, int len) {
/* Get request char stream */
printf("REQ: "); /* prompt */
memset(inbuf,0,len); /* clear for good measure */
return fgets(inbuf,len,stdin); /* read up to a EOL */
}
void client(int sockfd,FILE *fp) {
int n,i=0;
char sndbuf[MAXIN]; char rcvbuf[MAXOUT];
strcpy(sndbuf,readFileBytes(fp)); /* prompt */
int len = strlen(sndbuf);
printf("sending msg:%s %d\n", sndbuf,len);
while(i <= len) {
//sndbuf+=2
printf("%d bytes are written\n",write(sockfd, sndbuf + i ,PACKETSIZE)); /* send */
i=i+PACKETSIZE;
//printf("Wrote message: %s\n",sndbuf);
// memset(rcvbuf,0,MAXOUT); /* clear */
// n=read(sockfd, rcvbuf, MAXOUT-1); /* receive */
// //printf("Received reply: %d",n);
// write(STDOUT_FILENO, rcvbuf, n); /* echo */
// getreq(sndbuf, MAXIN); /* prompt */
}
}
// Server address
struct hostent *buildServerAddr(struct sockaddr_in *serv_addr,
char *serverIP, int portno) {
/* Construct an address for remote server */
memset((char *) serv_addr, 0, sizeof(struct sockaddr_in));
serv_addr->sin_family = AF_INET;
inet_aton(serverIP, &(serv_addr->sin_addr));
serv_addr->sin_port = htons(portno);
}
int main() {
//Client protocol
char *serverIP = "10.8.12.48";
int sockfd, portno = 5033;
struct sockaddr_in serv_addr;
char filename[50];
printf("Please enter file name to be send !\n");
scanf("%s",filename);
FILE *fp;
fp = fopen(filename,"r");
buildServerAddr(&serv_addr, serverIP, portno);
/* Create a TCP socket */
sockfd = socket(AF_INET, SOCK_STREAM, 0);
/* Connect to server on port */
if(!connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)))
{
printf("Connected to %s:%d\n",serverIP, portno);
client(sockfd,fp);
}
else
printf("Not connected !");
/* Carry out Client-Server protocol */
/* Clean up on termination */
close(sockfd);
}