void do_talk(const char *buf,int sockfd)
{
FILE *fp;
const char *t;
struct login_user me;
fp = fopen("login.dat","r");
if (fp == NULL) {
err_ret("failed to open the login.dat");
return;
}
else {
t = talk_name(buf,"& :\t\n");
printf("talk name is %s\n",t);
while(fread(&me,sizeof(struct login_user),1,fp) == 1) {
fprintf(stderr,"Find user once login\n");
if (strcmp(me.name,t) == 0) {
if (!me.online) {
fprintf(stderr,"your friends is offline\n");
return;
}
else {
const char *p;
char buf[MAXLINE];
p = inet_ntop(AF_INET,&me.useraddr.sin_addr,buf,sizeof(buf));
if (p == NULL) {
fprintf(stderr,"Failed to get address\n");
return;
}
else {
printf("buf is %s\n",buf);
char sendbuf[MAXLINE];
snprintf(sendbuf,sizeof(sendbuf),"talk:%s\n",buf);
printf("sendbuf is %s\n",sendbuf);
writen(sockfd,sendbuf,strlen(sendbuf));
return;
}
}
}
}
}
}
{
FILE *fp;
const char *t;
struct login_user me;
fp = fopen("login.dat","r");
if (fp == NULL) {
err_ret("failed to open the login.dat");
return;
}
else {
t = talk_name(buf,"& :\t\n");
printf("talk name is %s\n",t);
while(fread(&me,sizeof(struct login_user),1,fp) == 1) {
fprintf(stderr,"Find user once login\n");
if (strcmp(me.name,t) == 0) {
if (!me.online) {
fprintf(stderr,"your friends is offline\n");
return;
}
else {
const char *p;
char buf[MAXLINE];
p = inet_ntop(AF_INET,&me.useraddr.sin_addr,buf,sizeof(buf));
if (p == NULL) {
fprintf(stderr,"Failed to get address\n");
return;
}
else {
printf("buf is %s\n",buf);
char sendbuf[MAXLINE];
snprintf(sendbuf,sizeof(sendbuf),"talk:%s\n",buf);
printf("sendbuf is %s\n",sendbuf);
writen(sockfd,sendbuf,strlen(sendbuf));
return;
}
}
}
}
}
}