| firial 2004-01-23, 4:55 pm |
| I tried sending raw socket with syn flag, and watched ethereal and
tcpdump dump expected message.
but when I tried listening raw socket, I failed.
problem is,
when I execute server program, serverprogram dumped - " catching
socket "
even I did't send any socket
I wanna don't use recvfrom(~~ ) but listen(~~ )
( What I want is just "socket via ip and tcp layer .." )
source is quite simple -
int main()
{
int listenfd, connfd;
pid_t childpid;
socklen_t clilen;
struct sockaddr_in cliaddr,servaddr;
listenfd = socket(AF_INET,SOCK_RAW,IPPROTO_RAW);
bzero(&servaddr,sizeof(servaddr) );
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons (SERV_PORT);
bind ( listenfd , (SA * ) &servaddr, sizeof (servaddr) );
listen(listenfd,5) ;
//recvfrom is needed(?)
clilen = sizeof (cliaddr );
connfd = accept (listenfd , ( SA *) &cliaddr, &clilen);
printf(" cache !!!! \n");
close (listenfd ) ;
close(connfd);
}
it's solaris 7. I wanna your help
thanks for reading.
|