首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

有关unix下socket的有关问题

2012-03-06 
有关unix下socket的问题下面这段程序是网上找的一段程序但是报错如下server_body.c:Infunction`main :serv

有关unix下socket的问题
下面这段程序是网上找的一段程序
但是报错如下
server_body.c:   In   function   `main ':
server_body.c:41:   incompatible   types   in   assignment
附程序如下:
#include   "server_body.h "
#include   "stdio.h "
#include   "string.h "
#include   "sys/socket.h "
#include   "netinet/in.h "
#include   "pthread.h "
#include   "sys/timeb.h "
#include   "unistd.h "
#include   "stdlib.h "

static   char*   GetCurrentTime(char*   t_buffer)
{
time_t   ltime;
time(&ltime);
memset(t_buffer,0,strlen(t_buffer));
sprintf(t_buffer, "%ld ",ltime);
return   t_buffer;
}

static   void*   doit(void*   arg)
{
pthread_detach(pthread_self());
close((int)arg);
return(NULL);
}

int   main(int   argc,   char   **argv)
{
int   listenfd,   connfd;  
socklen_t   addrlen,len;  
struct   sockaddr_in   cliaddr,   servaddr;  
pthread_t   tid;  
listenfd=socket   (AF_INET,   SOCK_STREAM,   0   );  
bzero   (&servaddr,   sizeof   (servaddr   )   );  
servaddr.sin_family=AF_INET;  
servaddr.sin_addr.s_addr=htonl   (INADDR_ANY   );  
servaddr.sin_port=PORT;  
bind   (listenfd,   (   struct   sockaddr   *)&servaddr,   sizeof(servaddr   )   );  
listen   (listenfd,   MAXCON   );  
addrlen=sizeof   (   cliaddr   );  
cliaddr=malloc(addrlen   );     //这里就是41行
for   (   ;   ;   )  
{  
len=addrlen;  
connfd=accept(listenfd,   (struct   sockaddr*)&cliaddr,&len   );  
pthread_creat   (&tid,   NULL,   &doit,   (   void*)connfd   );  
}  
return   0;
}

[解决办法]
struct sockaddr_in cliaddr

cliaddr 不是指针,为什么要 malloc ?
[解决办法]
cliaddr=malloc(addrlen ); //这里就是41行

注释掉这个语句
[解决办法]
cliaddr=malloc(addrlen );
[解决办法]
注释掉就可以了,不是指针不用分配空间!
[解决办法]
> .static char* GetCurrentTime(char* t_buffer)
> > {
> > time_t ltime;
> > time(&ltime);
> > memset(t_buffer,0,strlen(t_buffer));
> > sprintf(t_buffer, "%ld ",ltime);
> > return t_buffer;
> > }

FT!

热点排行