Пример #1
0
/********************************************************************
* receive_handler:													*
* thread that handles all incoming communication from the server 	*
********************************************************************/
void *receive_handler(void *arg)
{
	printf("receive thread created\n");
	int socket_desc;
	struct sockaddr_in server;

	//Create socket
	socket_desc = socket(AF_INET , SOCK_STREAM , 0);
	if (socket_desc == -1)
		error("Could not create socket");

	//Prepare the sockaddr_in structure
	server.sin_family = AF_INET;
	server.sin_port = htons(SERVER_PORT);
	server.sin_addr.s_addr = inet_addr(getServerIp());

	int read_size = 0;

	/****************** Receiving superloop ******************/
	while(1)
	{
		printf("Connecting to server...\n");
		while( connect(socket_desc, (struct sockaddr*)&server, sizeof(server)) < 0 )
		{
			printf("Connection failed, retry in 5 seconds\n");
			sleep(5);
		}
		printf("Connected!\n");
		
		// Continuously read from server while connection is active
		while( (read_size = recv(socket_desc , messageFromServer , MSG_SIZE , 0)) > 0 )
		{
			messageFromServer[read_size] = '\0';
			printf("Server-->Pi: %s\n", messageFromServer);
			parseServerMessage();
		}

		// Server disconnection
		if(read_size == 0)
		{
			printf("Server disconnected\n");
		}
		else if(read_size == -1)
		{
			error("recv failed\n");
		}

		// Close then reinit the socket and attempt reconnect to server
		close(socket_desc);
		socket_desc = socket(AF_INET , SOCK_STREAM , 0);
	}
	return 0;
}
Пример #2
0
int main(void)
{
    Clear_home();

    initBuffer();

    rBuf = readBuffer;
    wBuf = writeBuffer;

    (void) Cconws("STiNG test...\r\n");

    BYTE found = Supexec (find_STiNG);
    if(!found) {
        sleep(3);
        return 0;
    }

    getServerIp();
	WORD whichTests = 0;
	while(whichTests == 0) {
		showMenu();
		char req = Cnecin();
		if(req >= 'A' && req <= 'Z') req += 32;	// to upper case
		if(req == 'q') break;	// quit
		switch(req) {
		case 'a':	// all tests
			whichTests = 0xffff;
			break;
		case 's':
			whichTests = 0x8000;
			break;
		case '0':
		case '1':
		case '2':
		case '3':
			whichTests = 1 << (req - '0');
		}
	}

    if(whichTests & 1) doTest00();
    if(whichTests & 2) doTest01();
    if(whichTests & 4) doTest02();
    if(whichTests & 8) doTest03();
    if(whichTests & 0x8000) doSpeedTest();

    if(whichTests != 0) writeBufferToFile();
    deinitBuffer();
    
    sleep(3);
    return 0;
}
Пример #3
0
int sendMessage(const char* str, int len)
{
    if(len < 1)
        error("Message length < 1");

    if(len != strlen(str))
        printf("WARNING: length of string does not match length passed to function\n");

    int socket_desc;            // socket fd
    struct sockaddr_in  server; // server info to connect to

    //Create a TCP socket
    socket_desc = socket(AF_INET , SOCK_STREAM , 0);
    if (socket_desc == -1)
        error("Could not create socket\n");

    //Prepare the sockaddr_in structure
    server.sin_family   = AF_INET;
    server.sin_port     = htons(SERVER_PORT);   // Set port number to connect to
    server.sin_addr.s_addr = inet_addr(getServerIp());

    // Attempt connection
    if( connect(socket_desc, (struct sockaddr*)&server, sizeof(server)) < 0)
    {
        printf("sendMessage: Cannot connect to server\n");
        return 0;
    }
    else // Connection succeeded
    {
        printf("Pi-->Server: %s\n", str);  //Debug printf
        if(write(socket_desc, str, len) < 1)
            error("Writing to socket");
        // Close and reinitialize the socket descriptor
        if(close(socket_desc) < 0)
            error("Closing socket");
    }
    return 1;
}