Skip to content

Commit 70960a4

Browse files
committed
Add basic code for server and client
1 parent 0db14df commit 70960a4

File tree

4 files changed

+447
-0
lines changed

4 files changed

+447
-0
lines changed

login_file

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
sam pass A
2+
manchu pass C
3+
maulik pass P

manchu

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
abcd
2+
abce
3+
mm
4+
as
5+
as
6+
a
7+
s
8+
d

myclient.c

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
#include <sys/socket.h>
4+
#include <string.h>
5+
#include <netinet/in.h>
6+
#include <unistd.h>
7+
#include <arpa/inet.h>
8+
9+
10+
#define RESPONSE_BYTES 512
11+
#define REQUEST_BYTES 512
12+
13+
char* receiveMsgFromServer(int sock_fd) {
14+
int numPacketsToReceive = 0;
15+
int n = read(sock_fd, &numPacketsToReceive, sizeof(int));
16+
if(n <= 0) {
17+
shutdown(sock_fd, SHUT_WR);
18+
return NULL;
19+
}
20+
char *str = (char*)malloc(numPacketsToReceive*RESPONSE_BYTES);
21+
memset(str, 0, numPacketsToReceive*RESPONSE_BYTES);
22+
char *str_p = str;
23+
int i;
24+
for(i = 0; i < numPacketsToReceive; ++i) {
25+
int n = read(sock_fd, str, RESPONSE_BYTES);
26+
str = str+RESPONSE_BYTES;
27+
}
28+
return str_p;
29+
}
30+
31+
void sendMsgToServer(int sock_fd, char *str) {
32+
int numPacketsToSend = (strlen(str)-1)/REQUEST_BYTES + 1;
33+
int n = write(sock_fd, &numPacketsToSend, sizeof(int));
34+
char *msgToSend = (char*)malloc(numPacketsToSend*REQUEST_BYTES);
35+
strcpy(msgToSend, str);
36+
int i;
37+
for(i = 0; i < numPacketsToSend; ++i) {
38+
int n = write(sock_fd, msgToSend, REQUEST_BYTES);
39+
msgToSend += REQUEST_BYTES;
40+
}
41+
}
42+
int main(int argc,char **argv)
43+
{
44+
int sock_fd,port_no;
45+
struct sockaddr_in serv_addr;
46+
char *msgFromServer;
47+
char msgToServer[256];
48+
49+
50+
sock_fd=socket(AF_INET, SOCK_STREAM, 0);
51+
port_no = atoi(argv[2]);
52+
53+
memset(&serv_addr, 0, sizeof(serv_addr)); //setting sockaddr_in serv_addr
54+
serv_addr.sin_family = AF_INET; //setting DOMAIN
55+
serv_addr.sin_port = htons(port_no); //setting port number
56+
inet_aton(argv[1], &serv_addr.sin_addr);
57+
58+
connect(sock_fd, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
59+
60+
printf("Connection Established.\n");
61+
// printf("Asking server what to do(by receiving input from server).\n");
62+
63+
while(1) {
64+
msgFromServer = receiveMsgFromServer(sock_fd);
65+
if(msgFromServer == NULL)
66+
break;
67+
if(strncmp(msgFromServer, "unauth", 6) == 0) {
68+
printf("Unautherized User.\n");
69+
shutdown(sock_fd, SHUT_WR);
70+
break;
71+
}
72+
printf("%s\n",msgFromServer);
73+
free(msgFromServer);
74+
75+
memset(msgToServer, 0, sizeof(msgToServer));
76+
scanf("%s", msgToServer);
77+
sendMsgToServer(sock_fd, msgToServer);
78+
if(strncmp(msgToServer, "exit", 4) == 0) {
79+
shutdown(sock_fd, SHUT_WR);
80+
break;
81+
}
82+
}
83+
84+
while(1) {
85+
msgFromServer = receiveMsgFromServer(sock_fd);
86+
if(msgFromServer == NULL)
87+
break;
88+
printf("%s\n",msgFromServer);
89+
free(msgFromServer);
90+
}
91+
printf("Write end closed by the server.\n");
92+
shutdown(sock_fd, SHUT_RD);
93+
printf("Connection closed gracefully.\n");
94+
return 0;
95+
96+
97+
}

0 commit comments

Comments
 (0)