+++ /dev/null
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <errno.h>
-#include <sys/socket.h>
-#include <sys/ioctl.h>
-#include <arpa/inet.h>
-
-static const int RDP_PORT = 3389;
-int create_server_socket();
-
-int main()
-{
- int server_sock = create_server_socket();
- for ( ;; ) {
- sockaddr_in sin;
- socklen_t len;
- int sock = accept(server_sock, (sockaddr *)&sin, &len);
-
- if (sock == -1) {
- perror("accept()");
- exit(1);
- }
-
- printf("Got socket.\n");
-
- close(sock);
- }
-}
-
-int create_server_socket()
-{
- int server_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- const unsigned int one = 1, zero = 0;
- struct sockaddr_in addr;
- int err;
-
- setsockopt(server_sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one));
- ioctl(server_sock, FIONBIO, &zero);
-
- addr.sin_family = AF_INET;
- addr.sin_addr.s_addr = INADDR_ANY;
- addr.sin_port = htons(RDP_PORT);
-
- do {
- err = bind(server_sock, (struct sockaddr *)&addr, sizeof(struct sockaddr));
-
- if (err == -1) {
- perror("bind()");
-
- /* try to recover from recoverable errors... */
- if (errno == ENOMEM || errno == EADDRINUSE) {
- puts("Waiting 1 sec before trying again...");
- sleep(1);
- } else {
- puts("Giving up.");
- exit(1);
- }
- }
- } while (err == -1);
-
- listen(server_sock, 20);
- return server_sock;
-}
-