Ejemplo n.º 1
0
SOCKET accept_inet_connection(int port)
{
	int flags;
	SOCKET client =  INVALID_SOCKET;

	dbgprint("serverSocket=%d\n", wifiServerSocket);
	if (wifiServerSocket == INVALID_SOCKET && !StartInetServer(port)) 
		goto _error_out;

	dbgprint("waiting on port %d..", port);
	while(v_running && (client = accept(wifiServerSocket, NULL, NULL)) == INVALID_SOCKET)
	{
		if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR){
			usleep(50000);
			continue;
		}
		MSG_LASTERROR("Accept Failed");
		break;
	}

	if (client != INVALID_SOCKET) {// Blocking..
		flags = fcntl(wifiServerSocket, F_GETFL, NULL);
		flags |= O_NONBLOCK;
		fcntl(wifiServerSocket, F_SETFL, flags);
	}

_error_out:
	return client;
}
Ejemplo n.º 2
0
SOCKET connectDroidCam(char * ip, int port)
{
	struct sockaddr_in sin;
	SOCKET sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
	
	if(sock == INVALID_SOCKET)
	{
		MSG_LASTERROR("Error");
	}
	else 
	{
		sin.sin_family = AF_INET;
		sin.sin_addr.s_addr = inet_addr(ip);
		sin.sin_port = htons(port);

		printf("connect IP='%x' (%s); p:%d\n", sin.sin_addr.s_addr, ip, port);

		if (connect(sock, (struct sockaddr*)&sin, sizeof(sin)) < 0)
		{
			printf("connect failed %d '%s'\n", errno, strerror(errno));
			MSG_ERROR("Connect failed, please try again.\nCheck IP and Port.\nCheck network connection.");
			close(sock);
			sock = INVALID_SOCKET;
		} 
	}
	return sock;
}
Ejemplo n.º 3
0
static int StartInetServer(int port)
{
	int flags = 0;
	int ret = 0;
	struct sockaddr_in sin;

	sin.sin_family	  = AF_INET;
	sin.sin_addr.s_addr = INADDR_ANY;
	sin.sin_port		= htons(port);

	wifiServerSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	if(wifiServerSocket == INVALID_SOCKET)
	{
		MSG_LASTERROR("Could not create socket");
		goto _error_out;
	}

	if(bind(wifiServerSocket, (struct sockaddr*)&sin, sizeof(sin)) < 0)
	{
		printf("bind( .. ) Failed (Error %d: %s) \n", errno, strerror(errno));
		goto _error_out;
	}
	if(listen(wifiServerSocket, 1) < 0)
	{
		printf("listen( .. ) Failed (Error %d: %s) \n", errno, strerror(errno));
		goto _error_out;
	}

	flags = fcntl(wifiServerSocket, F_GETFL, NULL);
	if(flags < 0)
	{
		printf("fcntl( .. ) Failed (Error %d: %s) \n", errno, strerror(errno));
		goto _error_out;
	}
	flags |= O_NONBLOCK;
	fcntl(wifiServerSocket, F_SETFL, flags);

	ret = 1;
	goto _exitOk;

_error_out:
	if (wifiServerSocket != INVALID_SOCKET){
		close(wifiServerSocket);
		wifiServerSocket = INVALID_SOCKET;
	}

_exitOk:
	return ret;
}
Ejemplo n.º 4
0
static void load_settings(void) {
    char buf[PATH_MAX];
    FILE * fp;

    snprintf(buf, sizeof(buf), "%s/.droidcam/settings", getenv("HOME"));
    fp = fopen(buf, "r");

    if (!fp){
        MSG_LASTERROR("settings error");
        return;
    }

    if(fgets(buf, sizeof(buf), fp)){
        sscanf(buf, "%d-%d", &g_webcam_w, &g_webcam_h);
        dbgprint("got webcam_w=%d, webcam_h=%d\n", g_webcam_w, g_webcam_h);
    }

    fclose(fp);
}
Ejemplo n.º 5
0
static int StartBthServer()
{
	int ret = 0;
	int flags = 0;
	uint8_t port = 0;
	struct sockaddr_rc localAddr = { 0 };

	if((btServerSocket = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)) == INVALID_SOCKET){
		MSG_LASTERROR("Could not create bluetooth socket");
		goto _error_out;
	}

	// bind socket to 1st available port of the first available local bluetooth adapter
	localAddr.rc_family = AF_BLUETOOTH;
	localAddr.rc_bdaddr = *BDADDR_ANY;
	
	for (port = 1; port < 30; port++)
	{
		dbgprint("Trying port %d\n", port);
		localAddr.rc_channel = htons(port);
		if(bind(btServerSocket, (struct sockaddr*) &localAddr, sizeof(localAddr)) == 0)
		{
			printf("bind bth on port %d\n", port);
			break;
		}
	}
	
	if (port == 30){
		MSG_ERROR("Could not bind bluetooth socket");
		goto _error_out;
	}

	if ( !RegisterSdp(port) )
		goto _error_out;

	if(listen(btServerSocket, 1) < 0)
	{
		MSG_LASTERROR("Could not listen on bt socket");
		goto _error_out;
	}

	if((flags = fcntl(btServerSocket, F_GETFL, NULL)) <  0)
	{
		MSG_LASTERROR("Could not get bt socket flags");
		goto _error_out;
	}
	flags |= O_NONBLOCK;
	fcntl(btServerSocket, F_SETFL, flags);
	
	ret = 1;
	goto _exitOk;

_error_out:
	if (btServerSocket != INVALID_SOCKET){
		close(btServerSocket);
		btServerSocket = INVALID_SOCKET;
	}

_exitOk:
	return ret;
}