OSDN Git Service

I was library can be compiled 20140223
[zither/ds-zither.git] / libms / socket_reads.c
1 // socket_read.c
2 // $Id: socket_reads.c,v 1.1 2007/10/17 10:57:56 sendan Exp $
3 // masashi shimakura
4
5 #include<stdio.h>
6 #include<fcntl.h>
7 #include <errno.h>
8 #include <unistd.h>
9 #include <sys/select.h>
10
11
12 int socket_reads(int sk, char * readdata, int getlen, int interval){
13 struct timeval tv;
14 int retval;
15 int ret;
16 fd_set rfds;
17
18 tv.tv_sec = interval;
19 tv.tv_usec = 0;
20
21 #ifdef SOCKET_BUG
22 printf("SOCKET: socket_read(1): interval time set %d\n", interval);
23 #endif
24
25 ret = 0;
26
27 while(1){
28    FD_ZERO(&rfds);
29    FD_SET(sk, &rfds);
30    retval = select(sk + 1, &rfds, NULL, NULL, &tv);
31    if(retval < 0){
32       #ifdef SOCKET_BUG
33       printf("SOCKET: socket_read(2): NG select <%d> ERRNO: %d %s\n",
34         retval, errno, strerror(errno));
35       #endif
36       ret = -1;
37       break;
38       }
39    if(retval == 0){
40       #ifdef SOCKET_BUG
41       printf("SOCKET: socket_read(3): NG select <%d> ERRNO: %d %s\n",
42         retval, errno, strerror(errno));
43       #endif
44       ret = -1;
45       break;
46       }
47    if(retval >= 1){
48       ret = read(sk, readdata, getlen);
49       #ifdef SOCKET_BUG
50       printf("SOCKET: socket_read(4): NG select <%d> ERRNO: %d %s\n",
51         retval, errno, strerror(errno));
52       #endif
53       break;
54       }
55    } /* while */
56
57 return(ret);
58 }
59
60
61