📄 network.c
字号:
#include "global.h"
void receive_context(int connfd,char *buff,int l,int flag,char w)
{
int i = 0;
int j = 0;
int n = 0;
int nn = 0;
int res;
int len;
char c;
char temp[MAX_MES];
char num[MAX_NUM];
char * mes;
if(flag) {
num[0] = w;
i = 1;
}
while((n=read(connfd,&c,1))>0) {
num[i] = c;
if(c == '\n') {
num[i] = '\0';
len = get_int(num)+1;
j = l;
while((nn=read(connfd,temp,len))>0) {
strncat(buff,temp,nn);
j += nn;
buff[j] = '\0';
len -= nn;
if(len == 0)
break;
}
j--;
buff[j] = '\0';
sem_wait(&empty);
sem_wait(&mutex);
snprintf(mess_buffer[mess_in],MAX_BUFF,"%s",buff);
mess_in = (mess_in+1)%MAX_SHOW_BUFF;
sem_post(&mutex);
sem_post(&full);
break;
} else
i++;
}
if(n < 0) {
fprintf(stderr,"read error\n");
finish();
exit(1);
}
}
/*receive messages*/
void receive_mes(int connfd)
{
int i = 0;
int n = 0;
int count = 0;
char c;
char buff[MAX_MES];
buff[0] = '\0';
while((n=read(connfd,&c,1))>0) {
if(c == '<') {
buff[i] = c;
i++;
while((n=read(connfd,&c,1))>0) {
buff[i] = c;
i++;
if(c == '>') {
buff[i++] = ' ';
buff[i] = '\0';
receive_context(connfd,buff,strlen(buff),0,0);
i = 0;
break;
}
}
} else {
buff[0] = '\0';
receive_context(connfd,buff,0,1,c);
i = 0;
}
}
if(n < 0) {
fprintf(stderr,"read error\n");
finish();
exit(1);
}
finish();
exit(1);
}
/*send message*/
void send_mes(char * buff,int connfd)
{
int n;
int i;
char temp[MAX_MES+10];
n = strlen(buff);
sprintf(temp,"%d\n%s\n",n,buff);
n = strlen(temp);
i = write(connfd,temp,n);
if(i < n) {
fprintf(stderr,"write error!\n");
exit(1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -