75 lines
1.7 KiB
C
75 lines
1.7 KiB
C
|
|
|
|
int handler4(int socket) {
|
|
int err = 0;
|
|
rcache_t cache;
|
|
jlexer_t lexer;
|
|
|
|
struct timeval tv;
|
|
tv.tv_sec = 1;
|
|
tv.tv_usec = 0;
|
|
setsockopt(socket, SOL_SOCKET, SO_RCVTIMEO, (const char*)&tv, sizeof tv);
|
|
|
|
rcache_init(&cache, socket);
|
|
jlexer_init(&lexer, &cache);
|
|
|
|
char token[1024];
|
|
int type = 0;
|
|
while ((type = jlexer_gettoken(&lexer, token)) != JLEXTOK_END) {
|
|
printf("%d: %s\n", type, token);
|
|
}
|
|
printf("= %d: %s\n", type, token);
|
|
//rcache_destroy(&cache);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int handler5(int socket) {
|
|
int err = 0;
|
|
rcache_t cache;
|
|
|
|
rcache_init(&cache, socket);
|
|
char c = '\0';
|
|
while ((c = rcache_getc(&cache)) != EOF) {
|
|
printf("%c", c);
|
|
if (c == '}') {
|
|
dprintf(socket, "good bay!\n");
|
|
close(socket);
|
|
}
|
|
}
|
|
rcache_destroy(&cache);
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
int handler3(int socket) {
|
|
|
|
//struct timeval tv;
|
|
//tv.tv_sec = 1;
|
|
//tv.tv_usec = 0;
|
|
//setsockopt(socket, SOL_SOCKET, SO_RCVTIMEO, (const char*)&tv, sizeof tv);
|
|
|
|
const int bsize = 1024;
|
|
char buffer[bsize];
|
|
ssize_t rsize = 0;
|
|
ssize_t tsize = 0;
|
|
while(true) {
|
|
memset(buffer, '\0', bsize);
|
|
rsize = read(socket, buffer, bsize);
|
|
if (rsize < 0) {
|
|
log_debug("Socket error: %s", strerror(errno));
|
|
if (errno != EAGAIN) {
|
|
return -1;
|
|
}
|
|
} else if (rsize == 0) {
|
|
log_debug("Socket rsize is zero");
|
|
return 0;
|
|
} else {
|
|
tsize += rsize;
|
|
printf("%ld:%s\n", rsize, buffer);
|
|
}
|
|
}
|
|
return 0;
|
|
}
|