-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmisc.c
More file actions
129 lines (103 loc) · 2.57 KB
/
misc.c
File metadata and controls
129 lines (103 loc) · 2.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include "misc.h"
int isprintable( int ch ){
return isprint( ch );
}
void close_socket( int sockfd ){
close( sockfd );
return;
}
int read_all( int sockfd, char *message, int length ){
if( read( sockfd, message, length ) <= 0 )return 0;
return 1;
}
int write_all( int sockfd, char *message, int length ){
int written;
while( length ){
if( (written = write( sockfd, message, length )) == -1 ){
puts( "write error" );
return 0;
} else{
length -= written;
message += written;
}
}
return 1;
}
int create_socket( int domain, int type, int protocol ){
int listener;
if( ( listener = socket( domain, type, protocol ) ) == -1 ){
puts( "socket error" );
exit( 1 );
} else{
puts( "socket ok" );
return listener;
}
return -1;
}
void reuse_socket( int sockfd, int level, int option, char *value, int length ){
if( setsockopt( sockfd, level, option, value, length ) == 1 ){
puts( "setsockopt error" );
close_socket( sockfd );
exit( 1 );
} else{
puts( "setsockopt ok" );
}
return;
}
void bind_socket( int listener, struct sockaddr *server_addr, int size ){
if( bind( listener, server_addr, size ) == -1 ){
puts( "bind error" );
close_socket( listener );
exit( 1 );
} else{
puts( "bind ok" );
}
return;
}
void set_listener( int listener, int backlog ){
if( listen( listener, backlog ) == -1 ){
puts( "listen error" );
close_socket( listener );
exit( 1 );
} else{
puts( "listen ok" );
}
return;
}
void check_sockets( int listener, fd_set *master, int fdmax, fd_set *readfd, fd_set *writefd, fd_set* exceptfd, struct timeval *timeout ){
if( select( fdmax, readfd, writefd, exceptfd, timeout ) == -1 ){
puts( "select error" );
quit( listener, master, fdmax );
} else{
puts( "select ok" );
}
return;
}
int accept_client( int sockfd, struct sockaddr *addr, int *addrlen ){
int newfd;
if( ( newfd = accept( sockfd, addr, (socklen_t *)addrlen ) ) == -1 ){
puts( "accept error" );
} else{
puts( "accept ok" );
return newfd;
}
return -1;
}
void connect_socket( int sockfd, struct sockaddr *addr, int size ){
if( connect( sockfd, addr, size ) == -1 ){
puts( "connect error" );
close_socket( sockfd );
exit( 1 );
} else
puts( "connect ok" );
return;
}
struct hostent* get_host_by_name( char *host ){
struct hostent *hostp;
if( ( hostp = gethostbyname( host ) ) == NULL ) {
puts( "host resolving error" );
exit( 1 );
} else
puts( "host resolving ok" );
return hostp;
}