Network Programming
Network Programming
Debaloy Chatterjee
2
Table of Contents:
Header Files for Socket Programming: 4
sys/socket.h 4
unistd.h 4
arpa/inet.h 4
TCP Programs: 11
Prog 01: Send string to and from server 11
Server Code: 11
Client Code: 12
Server Code: 14
Client Code: 16
Server Code: 18
Client Code: 20
Server Code: 22
Client Code: 24
Server Code: 26
Client Code: 28
Server Code: 30
Client Code: 32
Prog 07: Send IP Address 34
3
Server Code: 34
Client Code: 35
Server Code: 37
Client Code: 38
4
eg:
int sockfd = socket(AF_INET, SOCK_STREAM, 0)
unistd.h
1. int close(int fd)
2. ssize_t write(int fd, const void *buf, size_t nbytes)
3. ssize_t read(int fd, void *buff, size_t nbytes)
arpa/inet.h
1. unsigned long htonl(unsigned long) // for IP (host to network order)
2. unsigned short htons(unsigned short) // for Port (host to network)
3. unsigned long ntohl(unsigned long) // for IP (network to host)
4. unsigned short ntohs(unsigned short) // for Port (network to host)
5. unsigned long inet_addr(const char *addr) // returns decimal notation
6. inet_aton(“127.0.0.1”, &addr.sin_addr) // struct sockaddr_in addr;
7. char *inet_ntoa(struct in_addr) // returns dotted notation IP
INADDR_ANY is a flag means IP address is not set, it can be any. Any client can connect.
5
Server: socket, bind, listen, accept, read, write, close client, close server
Client: socket, connect, write, read, close
2. IP Address
struct in_addr {
in_addr_t s_addr;
};
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>
server_info.sin_family = AF_INET;
server_info.sin_addr.s_addr = htonl(LOCALHOST);
server_info.sin_port = htons(PORT);
server_info_len = sizeof(server_info);
client_info_len = sizeof(client_info);
// create socket
sfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sfd < 0) {
perror("Failed to create socket.\n");
return -1;
}
printf("Socket created.\n");
// bind socket
if (bind(sfd, (struct sockaddr*)&server_info, server_info_len) < 0) {
perror("Failed to bind socket.\n");
return -1;
}
printf("Socket binded.\n");
// listen
8
if (listen(sfd, 5) < 0) {
printf("Failed to listen on PORT: %d", PORT);
return -1;
}
printf("Listening on PORT: %d", PORT);
while (1) {
// accept
cfd = accept(sfd, (struct sockaddr*)&client_info, &client_info_len);
if (cfd < 0) {
perror("Failed to accept client.\n");
return -1;
}
printf("Client connected.\n");
// do client stuff
// close server
close(sfd);
return 0;
}
9
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>
server_info.sin_family = AF_INET;
server_info.sin_addr.s_addr = htonl(LOCALHOST);
server_info.sin_port = htons(PORT);
server_info_len = sizeof(server_info);
client_info_len = sizeof(client_info);
// create socket
sfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sfd < 0) {
perror("Failed to create socket.\n");
return -1;
}
printf("Socket created.\n");
// connect to server
if (connect(sfd, (struct sockaddr*)&server_info, server_info_len) < 0) {
printf("Failed to connect to server on PORT: %d", PORT);
return -1;
}
printf("Connected to server on PORT: %d", PORT);
// do stuff
10
// close
close(sfd);
}
11
TCP Programs:
Server Code:
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>
server_info.sin_family = AF_INET;
server_info.sin_port = htons(PORT);
server_info.sin_addr.s_addr = htonl(LOCALHOST);
server_info_len = sizeof(server_info);
client_info_len = sizeof(client_info);
// create socket
sfd = socket(AF_INET, SOCK_STREAM, 0);
if (sfd < 0) {
perror("Failed to create socket.\n");
return -1;
} else printf("Socket created.\n");
// listen
if (listen(sfd, 5) < 0) {
printf("Failed to listen on PORT: %d", PORT);
return -1;
} else printf("Server listening on PORT: %d", PORT);
char buffer[BUFFSIZE];
while (1) {
// accept connections
cfd = accept(sfd, (struct sockaddr*)&client_info, &client_info_len);
if (cfd < 0) {
perror("Failed to accept client.\n");
return -1;
} else printf("Client accepted.\n");
// do client stuff
bzero(buffer, sizeof(buffer));
read(cfd, buffer, sizeof(buffer));
printf("Client %d: %s", cfd, buffer);
strcpy(buffer, "Hello Client!");
write(cfd, buffer, sizeof(buffer));
// close client
close(cfd);
}
// close server
close(sfd);
return 0;
Client Code:
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>
13
server_info.sin_family = AF_INET;
server_info.sin_port = htons(PORT);
server_info.sin_addr.s_addr = htonl(LOCALHOST);
server_info_len = sizeof(server_info);
// create socket
sfd = socket(AF_INET, SOCK_STREAM, 0);
if (sfd < 0) {
perror("Failed to create socket.\n");
return -1;
} else printf("Socket created.\n");
// connet to server
if (connect(sfd, (struct sockaddr*)&server_info, server_info_len) < 0) {
printf("Failed to connect to server on PORT: %d\n", PORT);
return -1;
} else printf("Connected to server on PORT: %d\n", PORT);
// do client stuff
char buffer[BUFFSIZE];
bzero(buffer, sizeof(buffer));
int n = 0;
while((buffer[n++] = getchar()) != '\n' && n < BUFFSIZE);
write(sfd, buffer, sizeof(buffer));
read(sfd, buffer, sizeof(buffer));
printf("\n Server: %s\n", buffer);
// clean up
close(sfd);
return 0;
}
14
Server Code:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>
return 0;
}
server_info.sin_family = AF_INET;
server_info.sin_port = htons(PORT);
server_info.sin_addr.s_addr = htonl(LOCALHOST);
server_info_len = sizeof(server_info);
client_info_len = sizeof(client_info);
// create socket
sfd = socket(AF_INET, SOCK_STREAM, 0);
if (sfd < 0) {
perror("Failed to create socket.\n");
15
return -1;
}
printf("Socket created.\n");
// bind socket
if (bind(sfd, (struct sockaddr*)&server_info, server_info_len) < 0) {
perror("Failed to bind.\n");
return -1;
}
printf("Binding successful.\n");
// listen
if (listen(sfd, 5) < 0) {
printf("Failed to listen on PORT: %d", PORT);
return -1;
}
printf("Listening on PORT: %d\n", PORT);
while (1) {
// accept
cfd = accept(sfd, (struct sockaddr*)&client_info, &client_info_len);
if (cfd < 0) {
perror("Failed to accept client.\n");
return -1;
}
printf("Client accepted.\n");
// do client stuff
char buffer[BUFFSIZE];
bzero(buffer, sizeof(buffer));
int count = 0;
read(cfd, buffer, sizeof(buffer));
int n = 0;
while(buffer[n++] != '\n' && n < BUFFSIZE)
if (isVowel(buffer[n])) count++;
// close client
close(cfd);
}
16
// close server
close(sfd);
return 0;
}
Client Code:
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>
server_info.sin_family = AF_INET;
server_info.sin_port = htons(PORT);
server_info.sin_addr.s_addr = htonl(LOCALHOST);
server_info_len = sizeof(server_info);
client_info_len = sizeof(client_info);
// create socket
sfd = socket(AF_INET, SOCK_STREAM, 0);
if (sfd < 0) {
perror("Failed to create socket.\n");
return -1;
}
printf("Socket created.\n");
// connect
if (connect(sfd, (struct sockaddr*)&server_info, server_info_len) < 0) {
printf("Failed to connect on PORT: %d", PORT);
17
return -1;
}
printf("Connected to server on PORT: %d", PORT);
// do stuff
char buffer[BUFFSIZE];
bzero(buffer, sizeof(buffer));
int n = 0;
printf("\n Enter string: ");
while((buffer[n++] = getchar()) != '\n' && n < BUFFSIZE);
// close
close(sfd);
return 0;
}
18
Server Code:
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>
server_info.sin_family = AF_INET;
server_info.sin_addr.s_addr = htonl(LOCALHOST);
server_info.sin_port = htons(PORT);
server_info_len = sizeof(server_info);
client_info_len = sizeof(client_info);
// create socket
sfd = socket(AF_INET, SOCK_STREAM, 0);
if (sfd < 0) {
perror("Failed to create socket.\n");
return -1;
}
printf("Socket created.\n");
// bind socket
if (bind(sfd, (struct sockaddr*)&server_info, server_info_len) < 0) {
perror("Failed to bind socket.\n");
return -1;
}
19
printf("Socket binded.\n");
// listen
if (listen(sfd, 5) < 0) {
printf("Failed to listen on PORT: %d", PORT);
return -1;
}
printf("Listening on PORT: %d", PORT);
while (1) {
// accept
cfd = accept(sfd, (struct sockaddr*)&client_info, &client_info_len);
if (cfd < 0) {
perror("Failed to accept client.\n");
return -1;
}
printf("Client connected.\n");
// do client stuff
char buffer[BUFFSIZE];
bzero(buffer, sizeof(buffer));
read(cfd, buffer, sizeof(buffer));
int len = strlen(buffer);
char result[BUFFSIZE];
bzero(result, sizeof(result));
int n = 0;
for (int i = len - 1; i >= 0; i--) {
result[n] = buffer[i];
n++;
}
// close server
close(sfd);
return 0;
}
20
Client Code:
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>
server_info.sin_family = AF_INET;
server_info.sin_addr.s_addr = htonl(LOCALHOST);
server_info.sin_port = htons(PORT);
server_info_len = sizeof(server_info);
// create socket
sfd = socket(AF_INET, SOCK_STREAM, 0);
if (sfd < 0) {
perror("Failed to create socket.\n");
return -1;
}
printf("Socket created.\n");
// connect to server
if (connect(sfd, (struct sockaddr*)&server_info, server_info_len) < 0) {
printf("Failed to connect to server on PORT: %d\n", PORT);
return -1;
}
21
// do stuff
char buffer[BUFFSIZE];
int n = 0;
bzero(buffer, sizeof(buffer));
bzero(buffer, sizeof(buffer));
read(sfd, buffer, sizeof(buffer));
// close
close(sfd);
return 0;
}
22
Server Code:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>
server_info.sin_family = AF_INET;
server_info.sin_port = htons(PORT);
server_info.sin_addr.s_addr = htonl(LOCALHOST);
server_info_len = sizeof(server_info);
client_info_len = sizeof(client_info);
// create socket
sfd = socket(AF_INET, SOCK_STREAM, 0);
if (sfd < 0) {
perror("Failed to create socket.\n");
return -1;
}
printf("Socket created.\n");
// bind socket
if (bind(sfd, (struct sockaddr*)&server_info, server_info_len) < 0) {
perror("Failed to bind.\n");
return -1;
}
23
printf("Binding successful.\n");
// listen
if (listen(sfd, 5) < 0) {
printf("Failed to listen on PORT: %d", PORT);
return -1;
}
printf("Listening on PORT: %d\n", PORT);
while (1) {
// accept
cfd = accept(sfd, (struct sockaddr*)&client_info, &client_info_len);
if (cfd < 0) {
perror("Failed to accept client.\n");
return -1;
}
printf("Client accepted.\n");
// do client stuff
char buffer[BUFFSIZE];
bzero(buffer, sizeof(buffer));
int count = 0;
read(cfd, buffer, sizeof(buffer));
int tempLen = strlen(buffer);
int len = 0, index = 0;
while (buffer[index] != '\n') {
if (buffer[index] != ' ') len++;
index++;
}
char tempBuffer[BUFFSIZE];
bzero(tempBuffer, sizeof(tempBuffer));
bzero(buffer, sizeof(buffer));
24
int j = 0;
while(i >= 0)
buffer[j++] = tempBuffer[i--];
// close client
close(cfd);
}
// close server
close(sfd);
return 0;
}
Client Code:
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>
server_info.sin_family = AF_INET;
server_info.sin_port = htons(PORT);
server_info.sin_addr.s_addr = htonl(LOCALHOST);
server_info_len = sizeof(server_info);
client_info_len = sizeof(client_info);
// create socket
25
// connect
if (connect(sfd, (struct sockaddr*)&server_info, server_info_len) < 0) {
printf("Failed to connect on PORT: %d", PORT);
return -1;
}
printf("Connected to server on PORT: %d", PORT);
// do stuff
char buffer[BUFFSIZE];
bzero(buffer, sizeof(buffer));
int n = 0;
printf("\n Enter string: ");
while((buffer[n++] = getchar()) != '\n' && n < BUFFSIZE);
write(sfd, buffer, sizeof(buffer));
read(sfd, buffer, sizeof(buffer));
printf("\n String length: %s", buffer);
// close
close(sfd);
return 0;
}
26
Server Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>
server_info.sin_family = AF_INET;
server_info.sin_addr.s_addr = htonl(LOCALHOST);
server_info.sin_port = htons(PORT);
server_info_len = sizeof(server_info);
client_info_len = sizeof(client_info);
// create socket
sfd = socket(AF_INET, SOCK_STREAM, 0);
if (sfd < 0) {
perror("Failed to create socket.\n");
return -1;
}
printf("Socket created.\n");
// bind socket
if (bind(sfd, (struct sockaddr*)&server_info, server_info_len) < 0) {
perror("Failed to bind socket.\n");
return -1;
}
27
printf("Socket binded.\n");
// listen
if (listen(sfd, 5) < 0) {
printf("Failed to listen on PORT: %d\n", PORT);
return -1;
}
printf("Listening on PORT: %d\n", PORT);
while (1) {
// accept
cfd = accept(sfd, (struct sockaddr*)&client_info, &client_info_len);
if (cfd < 0) {
perror("Failed to accept client.\n");
return -1;
}
printf("Client connected.\n");
// do client stuff
char buffer[BUFFSIZE];
bzero(buffer, sizeof(buffer));
bzero(buffer, sizeof(buffer));
bzero(buffer, sizeof(buffer));
int res = n1 * n2, len = 0;
char reply[BUFFSIZE];
bzero(reply, sizeof(reply));
int n = 0;
// close server
close(sfd);
return 0;
}
Client Code:
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>
server_info.sin_family = AF_INET;
server_info.sin_addr.s_addr = htonl(LOCALHOST);
29
server_info.sin_port = htons(PORT);
server_info_len = sizeof(server_info);
client_info_len = sizeof(client_info);
// create socket
sfd = socket(AF_INET, SOCK_STREAM, 0);
if (sfd < 0) {
perror("Failed to create socket.\n");
return -1;
}
printf("Socket created.\n");
// connect to server
if (connect(sfd, (struct sockaddr*)&server_info, server_info_len) < 0) {
printf("Failed to connect to server on PORT: %d\n", PORT);
return -1;
}
printf("Connected to server on PORT: %d\n", PORT);
// do stuff
char buffer[BUFFSIZE];
int n = 0;
bzero(buffer, sizeof(buffer));
printf("\n Enter number 1: ");
while((buffer[n++] = getchar()) != '\n');
write(sfd, buffer, sizeof(buffer));
n = 0;
printf("\n Enter number 2: ");
while((buffer[n++] = getchar()) != '\n');
write(sfd, buffer, sizeof(buffer));
// close
close(sfd);
return 0;
}
30
Server Code:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>
server_info.sin_family = AF_INET;
server_info.sin_port = htons(PORT);
server_info.sin_addr.s_addr = htonl(LOCALHOST);
server_info_len = sizeof(server_info);
client_info_len = sizeof(client_info);
// create socket
sfd = socket(AF_INET, SOCK_STREAM, 0);
if (sfd < 0) {
perror("Failed to create socket.\n");
return -1;
}
printf("Socket created.\n");
// bind socket
if (bind(sfd, (struct sockaddr*)&server_info, server_info_len) < 0) {
perror("Failed to bind.\n");
return -1;
}
31
printf("Binding successful.\n");
// listen
if (listen(sfd, 5) < 0) {
printf("Failed to listen on PORT: %d", PORT);
return -1;
}
printf("Listening on PORT: %d\n", PORT);
while (1) {
// accept
cfd = accept(sfd, (struct sockaddr*)&client_info, &client_info_len);
if (cfd < 0) {
perror("Failed to accept client.\n");
return -1;
}
printf("Client accepted.\n");
// do client stuff
char buffer[BUFFSIZE];
bzero(buffer, sizeof(buffer));
int n = 0, index = 0;
char result[BUFFSIZE];
bzero(result, sizeof(result));
// close client
close(cfd);
}
// close server
close(sfd);
return 0;
}
32
Client Code:
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>
server_info.sin_family = AF_INET;
server_info.sin_port = htons(PORT);
server_info.sin_addr.s_addr = htonl(LOCALHOST);
server_info_len = sizeof(server_info);
client_info_len = sizeof(client_info);
// create socket
sfd = socket(AF_INET, SOCK_STREAM, 0);
if (sfd < 0) {
perror("Failed to create socket.\n");
return -1;
}
printf("Socket created.\n");
// connect
if (connect(sfd, (struct sockaddr*)&server_info, server_info_len) < 0) {
printf("Failed to connect on PORT: %d", PORT);
return -1;
}
printf("Connected to server on PORT: %d", PORT);
// do stuff
char buffer[BUFFSIZE];
33
bzero(buffer, sizeof(buffer));
int n = 0;
printf("\n Enter string: ");
while((buffer[n++] = getchar()) != '\n' && n < BUFFSIZE);
// close
close(sfd);
return 0;
}
34
Server Code:
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>
server_info.sin_family = AF_INET;
server_info.sin_port = htons(PORT);
char host[] = "127.0.0.1";
server_info.sin_addr.s_addr = inet_addr(host);
server_info_len = sizeof(server_info);
client_info_len = sizeof(client_info);
// create socket
sfd = socket(AF_INET, SOCK_STREAM, 0);
if (sfd < 0) {
perror("Failed to create socket.\n");
return -1;
} else printf("Socket created.\n");
// listen
35
if (listen(sfd, 5) < 0) {
printf("Failed to listen on PORT: %d", PORT);
return -1;
} else printf("Server listening on PORT: %d", PORT);
char buffer[BUFFSIZE];
while (1) {
// accept connections
cfd = accept(sfd, (struct sockaddr*)&client_info, &client_info_len);
if (cfd < 0) {
perror("Failed to accept client.\n");
return -1;
} else printf("Client accepted.\n");
// do client stuff
bzero(buffer, sizeof(buffer));
strcpy(buffer, host);
write(cfd, buffer, sizeof(buffer));
// close client
close(cfd);
}
// close server
close(sfd);
return 0;
}
Client Code:
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>
server_info.sin_family = AF_INET;
server_info.sin_port = htons(PORT);
char host[] = "127.0.0.1";
server_info.sin_addr.s_addr = inet_addr(host);
server_info_len = sizeof(server_info);
// create socket
sfd = socket(AF_INET, SOCK_STREAM, 0);
if (sfd < 0) {
perror("Failed to create socket.\n");
return -1;
} else printf("Socket created.\n");
// connet to server
if (connect(sfd, (struct sockaddr*)&server_info, server_info_len) < 0) {
printf("Failed to connect to server on PORT: %d\n", PORT);
return -1;
} else printf("Connected to server on PORT: %d\n", PORT);
// do client stuff
char buffer[BUFFSIZE];
bzero(buffer, sizeof(buffer));
read(sfd, buffer, sizeof(buffer));
printf("\n Server IP: %s\n", buffer);
// clean up
close(sfd);
return 0;
}
37
Server Code:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>
server_info.sin_family = AF_INET;
server_info.sin_port = htons(PORT);
server_info.sin_addr.s_addr = htonl(LOCALHOST);
server_info_len = sizeof(server_info);
client_info_len = sizeof(client_info);
// create socket
sfd = socket(AF_INET, SOCK_STREAM, 0);
if (sfd < 0) {
perror("Failed to create socket.\n");
return -1;
}
printf("Socket created.\n");
// bind socket
if (bind(sfd, (struct sockaddr*)&server_info, server_info_len) < 0) {
perror("Failed to bind.\n");
return -1;
}
38
printf("Binding successful.\n");
// listen
if (listen(sfd, 5) < 0) {
printf("Failed to listen on PORT: %d", PORT);
return -1;
}
printf("Listening on PORT: %d\n", PORT);
while (1) {
// accept
cfd = accept(sfd, (struct sockaddr*)&client_info, &client_info_len);
if (cfd < 0) {
perror("Failed to accept client.\n");
return -1;
}
printf("Client accepted.\n");
// do client stuff
char buffer[BUFFSIZE];
bzero(buffer, sizeof(buffer));
int sum = 0;
read(cfd, buffer, sizeof(buffer));
int n = 0;
while(buffer[n++] != '\n' && n < BUFFSIZE)
sum += (int)(buffer[n]);
// close client
close(cfd);
}
// close server
close(sfd);
return 0;
}
Client Code:
#include <stdio.h>
39
#include <string.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <unistd.h>
server_info.sin_family = AF_INET;
server_info.sin_port = htons(PORT);
server_info.sin_addr.s_addr = htonl(LOCALHOST);
server_info_len = sizeof(server_info);
client_info_len = sizeof(client_info);
// create socket
sfd = socket(AF_INET, SOCK_STREAM, 0);
if (sfd < 0) {
perror("Failed to create socket.\n");
return -1;
}
printf("Socket created.\n");
// connect
if (connect(sfd, (struct sockaddr*)&server_info, server_info_len) < 0) {
printf("Failed to connect on PORT: %d", PORT);
return -1;
}
printf("Connected to server on PORT: %d", PORT);
// do stuff
char buffer[BUFFSIZE];
bzero(buffer, sizeof(buffer));
40
int n = 0;
printf("\n Enter string: ");
while((buffer[n++] = getchar()) != '\n' && n < BUFFSIZE);
// close
close(sfd);
return 0;
}