bin_PROGRAMS = examples/ucmatose examples/rping examples/udaddy examples/mckey \
examples/rdma_client examples/rdma_server examples/rdma_xclient \
examples/rdma_xserver examples/rstream examples/rcopy \
- examples/riostream examples/udpong
+ examples/riostream examples/udpong examples/rcli examples/rsvr
examples_ucmatose_SOURCES = examples/cmatose.c examples/common.c
examples_ucmatose_LDADD = $(top_builddir)/src/librdmacm.la
examples_rping_SOURCES = examples/rping.c
examples_rcopy_LDADD = $(top_builddir)/src/librdmacm.la
examples_udpong_SOURCES = examples/udpong.c examples/common.c
examples_udpong_LDADD = $(top_builddir)/src/librdmacm.la
+examples_rcli_SOURCES = examples/rcli.c
+examples_rcli_LDADD = $(top_builddir)/src/librdmacm.la
+examples_rsvr_SOURCES = examples/rsvr.c
+examples_rsvr_LDADD = $(top_builddir)/src/librdmacm.la
librdmacmincludedir = $(includedir)/rdma
infinibandincludedir = $(includedir)/infiniband
--- /dev/null
+#include <rdma/rsocket.h>\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <string.h>\r
+#include <unistd.h>\r
+#include <sys/types.h>\r
+#include <netinet/in.h>\r
+#include <arpa/inet.h>\r
+\r
+\r
+int main(int argc, char *argv[])\r
+{\r
+ char rbuf[80];\r
+ int n, s;\r
+ int optval;\r
+ socklen_t optlen = sizeof(optval);\r
+ struct sockaddr_in srvaddr;\r
+ \r
+ if (argc != 2) {\r
+ printf("Usage: %s ipaddr\n", argv[0]);\r
+ exit(EXIT_FAILURE);\r
+ }\r
+\r
+ /* Create the socket */\r
+ if ((s = rsocket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {\r
+ perror("rsocket()");\r
+ exit(EXIT_FAILURE);\r
+ }\r
+ \r
+ /* Check the status for the keepalive option */\r
+ if (rgetsockopt(s, SOL_SOCKET, SO_KEEPALIVE, &optval, &optlen) < 0) {\r
+ perror("rgetsockopt()");\r
+ close(s);\r
+ exit(EXIT_FAILURE);\r
+ }\r
+ printf("SO_KEEPALIVE is %s\n", (optval ? "ON" : "OFF"));\r
+\r
+ memset(&srvaddr, '0', sizeof(srvaddr));\r
+\r
+ if (inet_pton(AF_INET, argv[1], &srvaddr.sin_addr) < 0) {\r
+ printf("IP Conversion failed\n");\r
+ exit(EXIT_FAILURE);\r
+ }\r
+\r
+ srvaddr.sin_family = AF_INET;\r
+ srvaddr.sin_port = htons(7777);\r
+\r
+ /* Connect */\r
+ if (rconnect(s,(struct sockaddr*)&srvaddr,sizeof(srvaddr)) < 0) {\r
+ perror("rconnect()");\r
+ close(s);\r
+ exit(EXIT_FAILURE);\r
+\r
+ }\r
+\r
+ /* Set the option active */\r
+ optval = 1;\r
+ optlen = sizeof(optval);\r
+ if (rsetsockopt(s, SOL_SOCKET, SO_KEEPALIVE, &optval, optlen) < 0) {\r
+ perror("rsetsockopt()");\r
+ close(s);\r
+ exit(EXIT_FAILURE);\r
+ }\r
+ printf("SO_KEEPALIVE set on socket\n");\r
+\r
+ /* Check the status again */\r
+ if (rgetsockopt(s, SOL_SOCKET, SO_KEEPALIVE, &optval, &optlen) < 0) {\r
+ perror("rgetsockopt()");\r
+ close(s);\r
+ exit(EXIT_FAILURE);\r
+ }\r
+ printf("SO_KEEPALIVE is %s\n", (optval ? "ON" : "OFF"));\r
+\r
+ memset(rbuf, '0', sizeof(rbuf));\r
+\r
+ while ((n=rread(s,rbuf,sizeof(rbuf)-1)) > 0) {\r
+ rbuf[n] = 0;\r
+ if (fputs(rbuf, stdout) == EOF)\r
+ printf("Error writing receive buffer stdout\n");\r
+ }\r
+\r
+ if (n<0) printf("No data\n"); \r
+\r
+ return 0;\r
+\r
+ exit(EXIT_SUCCESS);\r
+}\r
+\r
--- /dev/null
+#include <rdma/rsocket.h>\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <string.h>\r
+#include <time.h>\r
+#include <unistd.h>\r
+#include <sys/types.h>\r
+#include <netinet/in.h>\r
+\r
+#define MAX_CLIENTS 2\r
+\r
+int main()\r
+{\r
+ char sbuf[80];\r
+ int limit, num_clients, s, sc;\r
+ int clients[MAX_CLIENTS];\r
+ struct sockaddr_in srvaddr;\r
+ time_t t;\r
+ \r
+ /* Create the socket */\r
+ if ((s = rsocket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {\r
+ perror("rsocket()");\r
+ exit(EXIT_FAILURE);\r
+ }\r
+\r
+ /* Bind */\r
+ memset(&srvaddr, '0', sizeof(srvaddr));\r
+ srvaddr.sin_family = AF_INET;\r
+ srvaddr.sin_addr.s_addr = htonl(INADDR_ANY);\r
+ srvaddr.sin_port = htons(7777);\r
+\r
+ if (rbind(s,(struct sockaddr*)&srvaddr,sizeof(srvaddr)) < 0) {\r
+ perror("rbind()");\r
+ close(s);\r
+ exit(EXIT_FAILURE);\r
+ }\r
+\r
+ if (rlisten(s,MAX_CLIENTS) < 0) {\r
+ perror("listen()");\r
+ exit(EXIT_FAILURE);\r
+ }\r
+\r
+ num_clients=0;\r
+ while(1) {\r
+\r
+ limit=1;\r
+ while(limit) {\r
+ if (num_clients < MAX_CLIENTS) {\r
+ sc = raccept(s, (struct sockaddr*)NULL, NULL); \r
+ clients[num_clients] = sc;\r
+ num_clients++;\r
+ t = time(NULL);\r
+ snprintf(sbuf, sizeof(sbuf), "%.24s\r\n", ctime(&t));\r
+ rwrite(sc, sbuf, strlen(sbuf)); \r
+ } else {\r
+ limit=0;\r
+ }\r
+\r
+ sleep(1);\r
+ }\r
+ \r
+ if (limit == 0 && num_clients == MAX_CLIENTS) {\r
+ printf("Max number of clients, %i, has been reached\n", MAX_CLIENTS);\r
+ num_clients = 9999;\r
+ }\r
+ sleep(1);\r
+ }\r
+\r
+}\r
+\r