| lionaneesh |
28May2010 08:28 |
Help needed in echo server program
hey i fixed up my previous echo server program but now i am facing problems in recv() function..
This program successfully sends "Hiii!!!!" to the client .
But is not receiving properly ..
I telneted the program to test
and when i send a message from telnet to this program .
It is showing some:-
"libc.so.6"
on the screen
why this is happening ..
Help me with this.
Here is the new source code:-
Code:
/* A simple server in the internet domain using TCP
The port number is passed as an argument */
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include<arpa/inet.h>
#include<netdb.h>
#include<string.h>
#define portno "4040"
int main()
{
struct addrinfo hints,*serv,*p;
int sockfd,newfd,status;
struct sockaddr_storage their_addr;
socklen_t addr_size;
char *msg;
int len;
char buff[100];
memset(&hints,0,sizeof(hints));
hints.ai_socktype=SOCK_STREAM;
hints.ai_family=AF_UNSPEC;
hints.ai_flags=AI_PASSIVE;
if((status=getaddrinfo(NULL,portno,&hints,&serv)) == -1)
{
fprintf(stderr,"Error in getaddrinfo :-\n %s\n",gai_strerror(status));
}
for(p=serv;p!=NULL;p = p->ai_next)
{
if( (sockfd = socket(p->ai_family,p->ai_socktype,p->ai_protocol)) == -1 )
{
printf("Error in Socket \n");
continue;
}
if( bind(sockfd,p->ai_addr,p->ai_addrlen) == -1)
{
printf("Binding error!!!\n");
close(sockfd);
continue;
}
break;
}
/* if( (connect(sockfd,serv->ai_addr,serv->ai_addrlen) ) == -1 )
{
printf("Connect err!!!\n\n");
return(0);
} if on client we use this*/
listen(sockfd,10);
addr_size= sizeof(their_addr);
newfd = accept(sockfd, (struct sockaddr *)&their_addr,&addr_size);
printf("%s",msg);
if( ( send(newfd,"Hiii!!!!",9,0) ) == -1)
{
printf("err in send\n\n");
return(1);
}
recv(newfd,buff,sizeof(buff),0);
printf("\n");
freeaddrinfo(serv);
close(sockfd);
return(0);
}
|