读书人

有关unix下socket的有关问题

发布时间: 2012-03-06 20:47:55 作者: rapoo

有关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!

读书人网 >C语言

热点推荐