写了一个linux下即使聊天程序,聊天部分出现一个问题
刚学linux编程不久,就急着上手写点东西,现在写到对话部分,群聊是没问题,就私聊遇到问题,这里将输入的首字母作为区分,‘#’为群聊,‘$’为私聊,以下是服务端和客户端部分代码,
int speakall(LinkList L,char buf[],int size)//群聊函数。链表节点为存储用户的信息结构体
{
LinkList p;
int socket;
if(!L)
return -1;
p=L->next;
while(p!=NULL)
{
if(p->user.state==1)
{
socket=p->user.mysockfd;
sendto_client(&socket,buf,size);
}
p=p->next;
}
}
int chat_server(int *socket,char name[])
{
int i;
int len;
int running=1,recvsize;
char filepath[60];
int filesocket;
struct tm *pt;
time_t t;
char option;
char buf1[MAX_RECVSIZE];
char buf2[MAX_TEXTSIZE];
char id[10];
int destsocket;
memset(buf2,0,MAX_TEXTSIZE);
sprintf(buf2,"%s 上线 !\n",name);
speakall(L,buf2,strlen(buf2));
while(1)
{
memset(id,0,10);
memset(buf1,0,MAX_RECVSIZE);
memset(buf2,0,MAX_TEXTSIZE);
memset(filepath,0,60);
if((recvsize=recv(*socket,buf1,MAX_RECVSIZE,0))<=0)
{
perror("recv";
printf("用户 %s 掉线 \n",name);