Hi guys I was reading a book about the socket programming and there were two codes client and server.
here is the server code
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
void error(char *msg)
{
perror(msg);
exit(1);
}
int main(int argc, char *argv[])
{
int sockfd, newsockfd, portno, clilen;
char buffer[256];
struct sockaddr_in serv_addr, cli_addr;
int n;
if (argc < 2) {
fprintf(stderr,"ERROR, no port provided/n");
exit(1);
}
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd < 0)
error("ERROR OPENING SOCKET");
bzero((char *) &serv_addr, sizeof(serv_addr));
portno = atoi(argv[1]);
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons(portno);
if(bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) <0)
error("ERROR on binding");
listen(sockfd,5);
clilen = sizeof(cli_addr);
newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &client);
if(newsockfd < 0)
error("ERROR ON ACCEPT");
bzero(buffer,256);
n = read(newsockfd,buffer,255);
if(n < 0)
error("ERROR READING FROM SOCKET");
printf("HERE IS THE MESSAGE: %s\n",buffer);
n = write(newsockfd,"I GOT YOUR MESSAGE",18);
if(n < 0)
error("ERROR WRITING TO SOCKET");
return 0;
}
and here is the client code
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
void error(char *msg)
{
perror(msg);
exit(1);
}
int main(int argc, char *argv[])
{
int sockfd, portno, n;
struct sockaddr_in serv_addr;
struct hostent *server;
char buffer[256];
if(argc < 3) {
fprintf(stderr,"USAGE %s hostname port\n", argv[0]);
}
portno = atoi(argv[2]);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd < 0)
error("ERROR OPENING SOCKET");
server = gethostbyname(argv[1]);
if(server == NULL) {
fprintf(stderr,"ERROR no such host\n");
exit(0);
}
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length);
serv_addr.sin_port = htons(portno);
if(connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0)
error("ERROR CONECTING");
printf("Please Enter the message: ");
bzero(buffer,256);
fgets(buffer,255,stdin);
n = write(sockfd,buffer,strlen(buffer));
if(n < 0)
error("ERROR READING THE SOCKET");
printf("%s\n",buffer);
return 0;
}
But when I compile it with visual studio or turbo c++ or borland c++ they gives me error I have downloaded all the required headers but the problem is still there.
missing ; before identifierbzero(),bcopy(), andatoi(). Thebzero()andbcopy()functions were deprecated in the previous version of POSIX and are excluded from the current standard. Theatoi()function is explicitly defined as having no error handling, and is otherwise equivalent to(int) strtol(str, (char **)NULL, 10). (See also:strtol())bzero()should be replaced bymemset()andbcopy()should be replaced bymemmove()(Note:bcopy(ONE, TWO, THREE)gets replaced bymemmove(TWO, ONE, THREE).)