日期:2014-05-16  浏览次数:20652 次

Linux sokcet编程问题。。。。。。。。。。。。。。。。
为什么我的bind老是不成功呢?
struct   sockaddr_in   srvaddr;
bzero(&srvaddr,   sizeof(srvaddr));

srvaddr.sin_family   =   AF_INET;
srvaddr.sin_port   =   0;
srvaddr.sin_addr.s_addr   =   htonl(INADDR_ANY);

还有,我换了端口也不行。。。。。。
怎么回事啊,有人能解决先谢谢了。。。。

------解决方案--------------------
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{ /*socket error */
perror( "socket "); exit(1);
}
printf( "socket OK!\n ");
status=setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&opt,len); /* allow the point address reused!*/
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(MYPORT);
my_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(my_addr.sin_zero),8);
if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))== -1)
{/*bind error*/
perror( "bind "); exit(1);
}
printf( "bind OK!\n ");