11 #include <sys/socket.h>
12 #include <netinet/in.h>
13 #include <arpa/inet.h>
17 #include "artdaq/DAQdata/Globals.hh"
25 struct sockaddr_in sin;
27 listener_fd = socket(PF_INET, SOCK_STREAM, 0);
28 if (listener_fd == -1)
30 perror(
"socket error");
35 sts = setsockopt(listener_fd,SOL_SOCKET, SO_REUSEADDR, &opt,
sizeof(opt));
38 perror(
"setsockopt SO_REUSEADDR");
42 bzero((
char *)&sin,
sizeof(sin));
43 sin.sin_family = AF_INET;
44 sin.sin_port = htons(port);
45 sin.sin_addr.s_addr = INADDR_ANY;
48 sts = bind(listener_fd, (
struct sockaddr *)&sin,
sizeof(sin));
57 socklen_t arglen =
sizeof(len);
58 sts = getsockopt(listener_fd, SOL_SOCKET, SO_RCVBUF, &len, &arglen);
59 TRACE( 1,
"RCVBUF initial: %d sts/errno=%d/%d arglen=%d rcvbuf=%d listener_fd=%d"
60 ,len,sts,errno,arglen,rcvbuf,listener_fd );
64 sts = setsockopt(listener_fd, SOL_SOCKET, SO_RCVBUF, &len, arglen);
66 TRACE( 0,
"Error with setsockopt SNDBUF %d", errno );
68 sts = getsockopt(listener_fd, SOL_SOCKET, SO_RCVBUF, &len, &arglen);
69 if (len < (rcvbuf * 2))
70 TRACE( 1,
"RCVBUF %d not expected (%d) sts/errno=%d/%d"
71 ,len,rcvbuf,sts,errno);
73 TRACE( 3,
"RCVBUF %d sts/errno=%d/%d", len,sts,errno );
77 sts = listen(listener_fd, 5);
80 perror(
"listen error");
int TCP_listen_fd(int port, int rcvbuf)
Create a TCP listening socket on the given port and INADDR_ANY, with the given receive buffer...