有关unix下socket的问题

netreptile 2007-02-01 08:23:44
下面这段程序是网上找的一段程序
但是报错如下
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(<ime);
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;
}
...全文
303 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
skyneu 2008-04-02
  • 打赏
  • 举报
回复
不是指针不用malloc啊?
iambic 2007-02-01
  • 打赏
  • 举报
回复
>.static char* GetCurrentTime(char* t_buffer)
>>{
>>time_t ltime;
>>time(<ime);
>>memset(t_buffer,0,strlen(t_buffer));
>>sprintf(t_buffer,"%ld",ltime);
>>return t_buffer;
>>}

FT!
sharkoasis 2007-02-01
  • 打赏
  • 举报
回复
注释掉就可以了,不是指针不用分配空间!
xuzheng318 2007-02-01
  • 打赏
  • 举报
回复
cliaddr=malloc(addrlen );
jixingzhong 2007-02-01
  • 打赏
  • 举报
回复
cliaddr=malloc(addrlen ); //这里就是41行

注释掉这个语句
Wolf0403 2007-02-01
  • 打赏
  • 举报
回复
struct sockaddr_in cliaddr

cliaddr 不是指针,为什么要 malloc ?

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧