示例#1
0
文件: sockets.c 项目: DjCBS3/vino
static void
rfbInitListenSock(rfbScreenInfoPtr rfbScreen)
{
    char *netIface = (char*)rfbScreen->netIface;
    int i;

    if(netIface == NULL || if_nametoindex(netIface) == 0) {
      if(netIface != NULL)
        rfbLog("WARNING: This (%s) a invalid network interface, set to all\n", netIface);
      netIface = NULL;
    }

    if(rfbScreen->autoPort) {
      rfbLog("Autoprobing TCP port in (%s) network interface\n",
            netIface != NULL ? netIface : "all");

      for (i = 5900; i < 6000; i++) {
        if (ListenOnTCPPort(rfbScreen, i, netIface)) {
          rfbScreen->rfbPort = i;
          break;
        }
      }

      if (i >= 6000) {
        rfbLogPerror("Failure autoprobing");
        return;
      }

      rfbLog("Autoprobing selected port %d\n", rfbScreen->rfbPort);

      FD_ZERO(&rfbScreen->allFds);
      for(i=0; i < rfbScreen->rfbListenSockTotal; i++) {
        FD_SET(rfbScreen->rfbListenSock[i], &rfbScreen->allFds);
        rfbScreen->maxFd = rfbScreen->rfbListenSock[i];
      }
    }
    else if(rfbScreen->rfbPort > 0) {
      rfbLog("Listening for VNC connections on TCP port %d in (%s) network interface\n", 
            rfbScreen->rfbPort, netIface != NULL ? netIface : "all");

      if (!ListenOnTCPPort(rfbScreen, rfbScreen->rfbPort, netIface)) {
        rfbLogPerror("ListenOnTCPPort");
        return;
      }

      FD_ZERO(&rfbScreen->allFds);
      for(i=0; i < rfbScreen->rfbListenSockTotal; i++) {
        FD_SET(rfbScreen->rfbListenSock[i], &rfbScreen->allFds);
        rfbScreen->maxFd = rfbScreen->rfbListenSock[i];
      }
    }
}
示例#2
0
文件: httpd.c 项目: cmei/tightvnc
void
httpInitSockets()
{
    static Bool done = FALSE;

    if (done)
	return;

    done = TRUE;

    if (!httpDir)
	return;

    if (httpPort == 0) {
	httpPort = 5800 + atoi(display);
    }

    rfbLog("Listening for HTTP connections on TCP port %d\n", httpPort);

    rfbLog("  URL http://%s:%d\n",rfbThisHost,httpPort);

    if ((httpListenSock = ListenOnTCPPort(httpPort)) < 0) {
	rfbLogPerror("ListenOnTCPPort");
	exit(1);
    }

    AddEnabledDevice(httpListenSock);
}
示例#3
0
文件: httpd.c 项目: UIKit0/picogui
void
httpInitSockets(rfbScreenInfoPtr rfbScreen)
{
    if (rfbScreen->httpInitDone)
        return;

    rfbScreen->httpInitDone = TRUE;

    if (!rfbScreen->httpDir)
        return;

    if (rfbScreen->httpPort == 0) {
        rfbScreen->httpPort = rfbScreen->rfbPort-100;
    }

    rfbLog("Listening for HTTP connections on TCP port %d\n", rfbScreen->httpPort);

    rfbLog("  URL http://%s:%d\n",rfbScreen->rfbThisHost,rfbScreen->httpPort);

    if ((rfbScreen->httpListenSock = ListenOnTCPPort(rfbScreen->httpPort)) < 0) {
        rfbLogPerror("ListenOnTCPPort");
        exit(1);
    }

    /*AddEnabledDevice(httpListenSock);*/
}
示例#4
0
void
rfbInitSockets()
{
    static Bool done = FALSE;

    if (done)
        return;

    done = TRUE;

    if (inetdSock != -1) {
        const int one = 1;

        if (fcntl(inetdSock, F_SETFL, O_NONBLOCK) < 0) {
            rfbLogPerror("fcntl");
            exit(1);
        }

        if (setsockopt(inetdSock, IPPROTO_TCP, TCP_NODELAY,
                       (char *)&one, sizeof(one)) < 0) {
            rfbLogPerror("setsockopt");
            exit(1);
        }

        AddEnabledDevice(inetdSock);
        FD_ZERO(&allFds);
        FD_SET(inetdSock, &allFds);
        maxFd = inetdSock;
        return;
    }

    if (rfbPort == 0) {
        rfbPort = 5900 + atoi(display);
    }

    rfbLog("Listening for VNC connections on TCP port %d\n", rfbPort);

    if ((rfbListenSock = ListenOnTCPPort(rfbPort)) < 0) {
        rfbLogPerror("ListenOnTCPPort");
        exit(1);
    }

    AddEnabledDevice(rfbListenSock);

    FD_ZERO(&allFds);
    FD_SET(rfbListenSock, &allFds);
    maxFd = rfbListenSock;

    if (udpPort != 0) {
        rfbLog("rfbInitSockets: listening for input on UDP port %d\n",
               udpPort);

        if ((udpSock = ListenOnUDPPort(udpPort)) < 0) {
            rfbLogPerror("ListenOnUDPPort");
            exit(1);
        }
        AddEnabledDevice(udpSock);
        FD_SET(udpSock, &allFds);
        maxFd = max(udpSock, maxFd);
    }
}
示例#5
0
文件: sockets.c 项目: UIKit0/picogui
void
rfbInitSockets(rfbScreenInfoPtr rfbScreen)
{
    if (rfbScreen->socketInitDone)
	return;

    rfbScreen->socketInitDone = TRUE;

    if (rfbScreen->inetdSock != -1) {
	const int one = 1;

#ifndef WIN32
	if (fcntl(rfbScreen->inetdSock, F_SETFL, O_NONBLOCK) < 0) {
	    rfbLogPerror("fcntl");
	    exit(1);
	}
#endif

	if (setsockopt(rfbScreen->inetdSock, IPPROTO_TCP, TCP_NODELAY,
		       (char *)&one, sizeof(one)) < 0) {
	    rfbLogPerror("setsockopt");
	    exit(1);
	}

    	FD_ZERO(&(rfbScreen->allFds));
    	FD_SET(rfbScreen->inetdSock, &(rfbScreen->allFds));
    	rfbScreen->maxFd = rfbScreen->inetdSock;
	return;
    }

    if(rfbScreen->autoPort) {
        int i;
        rfbLog("Autoprobing TCP port \n");

        for (i = 5900; i < 6000; i++) {
            if ((rfbScreen->rfbListenSock = ListenOnTCPPort(i)) >= 0) {
		rfbScreen->rfbPort = i;
		break;
	    }
        }

        if (i >= 6000) {
	    rfbLogPerror("Failure autoprobing");
	    exit(1);
        }

        rfbLog("Autoprobing selected port %d\n", rfbScreen->rfbPort);
        FD_ZERO(&(rfbScreen->allFds));
        FD_SET(rfbScreen->rfbListenSock, &(rfbScreen->allFds));
        rfbScreen->maxFd = rfbScreen->rfbListenSock;
    }
    else if(rfbScreen->rfbPort>0) {
      rfbLog("Listening for VNC connections on TCP port %d\n", rfbScreen->rfbPort);

      if ((rfbScreen->rfbListenSock = ListenOnTCPPort(rfbScreen->rfbPort)) < 0) {
	rfbLogPerror("ListenOnTCPPort");
	exit(1);
      }

      FD_ZERO(&(rfbScreen->allFds));
      FD_SET(rfbScreen->rfbListenSock, &(rfbScreen->allFds));
      rfbScreen->maxFd = rfbScreen->rfbListenSock;
    }

    if (rfbScreen->udpPort != 0) {
	rfbLog("rfbInitSockets: listening for input on UDP port %d\n",rfbScreen->udpPort);

	if ((rfbScreen->udpSock = ListenOnUDPPort(rfbScreen->udpPort)) < 0) {
	    rfbLogPerror("ListenOnUDPPort");
	    exit(1);
	}
	FD_SET(rfbScreen->udpSock, &(rfbScreen->allFds));
	rfbScreen->maxFd = max((int)rfbScreen->udpSock,rfbScreen->maxFd);
    }
}