[ale] IPv6 programming question

Jim Popovitch yahoo at jimpop.com
Fri Nov 2 02:07:52 EDT 2007


More.....

On Fri, 2007-11-02 at 10:14 +0530, Srikanth Pokkuluri wrote:
> SERVER PROGRAM 
> int main() 
> { 
> int s,consd; int ret; 
> uint16_t val=0; 
> char buff[20]; 
> struct sockaddr_in6 ser,cli;  char ipAddr[128]; 
> socklen_t   t,clilen; 
> s = socket(AF_INET6,SOCK_STREAM,IPPROTO_TCP6); 
> if ( s <0) 
> 
>     perror ("socket 6 error"); 
> else 
>     ser.sin6_port=htons(2000); 
>     ser.sin6_family=AF_INET6; 
>     ser.sin6_flowinfo=0; 
>     ser.sin6_scope_id=0; 
> 
>   //inet_pton(AF_INET6,"fe80000000000000020795fffee4801f",&(ser.sin6_addr)); 
>     inet_pton(AF_INET6,"::1",&(ser.sin6_addr)); 
>     t = sizeof(struct sockaddr_in6); 
>     ret = bind(s,(struct sockaddr*)&ser,(struct sockaddr*)t); 
>     if( ret <0) 
> listen(s,5); 
> clilen = sizeof(struct sockaddr_in6); 
> memset(buff,'\0',sizeof(buff)); 
> ipAddr[0]='\0'; 
> 
> inet_ntop(int af, const void *src, char *dst, socklen_t cnt */ 

is something missing above... there is a un-matched comment on the line
above.

> while(1) 
> { 
> printf("Server waiting :) \n\n "); 
> consd = accept(s,(struct sockaddr*)&cli,(socklen_t*)&(clilen)); 
>         if( consd <-1 ) 

accept() will return -1 not, < -1, on error, perhaps it is error'ing and
perror isn't being called?

>             perror("accept error"); 
>         else 
>         { 
>         recv(s,buff,sizeof(buff),0); 
>         printf("Received from client data =%s",buff); 
>         printf("Received from client port =%d",ntohs(cli.sin6_port)); 
>         break; 
>         } 
> } 
> close(s) 
> } 

-Jim P.



More information about the Ale mailing list