Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Komunikacja UDP laptop - android

Ostatnio zmodyfikowano 2018-04-18 09:56
Autor Wiadomość
Azaks
Temat założony przez niniejszego użytkownika
Komunikacja UDP laptop - android
» 2018-04-17 15:16:29
Witam, na wstępie zaznaczę, że na razie w temacie komunikacji, programowania raczej raczkuję także mogą pojawić się babole, ale kto nie próbuje... :)
To tak , chcę skomunikować się za pomocą laptopa z telefonem z androidem. Od strony "fizycznej" wygląda to tak: w telefonie ściągam UDP Sender, włączam te samo Wi-fi co w laptopie, wpisuje w UDP sender IP wi-fi, port na którym działa program i próbuję coś wysłać, w komputerze zaś, mam odpalony w tym czasie program do komunikacji. Ale ciągle jest Waiting for data. Próbowałem w IP serwera wpisywać jakieś inne IP niż to wifi, ale też nic nie działa. Od strony technicznej wrzucam kod i screeny konfiguracji :
C/C++
#include <stdio.h>
#include <stdlib.h> // exit()
#include <string.h> // memset()
#include <arpa/inet.h> // inet_pton()
#include <sys/socket.h>

#define SERWER_PORT 8888
#define SERWER_IP "192.168.17.128"

int main()
{
    struct sockaddr_in serwer =
    {
        .sin_family = AF_INET,
        .sin_port = htons( SERWER_PORT )
    };
    if( inet_pton( AF_INET, SERWER_IP, & serwer.sin_addr ) <= 0 )
    {
        perror( "inet_pton() ERROR" );
        exit( 1 );
    }
   
    const int socket_ = socket( AF_INET, SOCK_DGRAM, 0 );
    if(( socket_ ) < 0 )
    {
        perror( "socket() ERROR" );
        exit( 2 );
    }
   
    char buffer[ 4096 ] = { };
   
    socklen_t len = sizeof( serwer );
    if( bind( socket_,( struct sockaddr * ) & serwer, len ) < 0 )
    {
        perror( "bind() ERROR" );
        exit( 3 );
    }
   
    while( 1 )
    {
        struct sockaddr_in client = { };
       
        memset( buffer, 0, sizeof( buffer ) );
       
        printf( "Waiting for connection...\n" );
        if( recvfrom( socket_, buffer, sizeof( buffer ), 0,( struct sockaddr * ) & client, & len ) < 0 )
        {
            perror( "recvfrom() ERROR" );
            exit( 4 );
        }
        printf( "|Message from client|: %s \n", buffer );
       
        char buffer_ip[ 128 ] = { };
        printf( "|Client ip: %s port: %d|\n", inet_ntop( AF_INET, & client.sin_addr, buffer_ip, sizeof( buffer_ip ) ), ntohs( client.sin_port ) );
       
        strncpy( buffer, "Message for client", sizeof( buffer ) );
       
        if( sendto( socket_, buffer, strlen( buffer ), 0,( struct sockaddr * ) & client, len ) < 0 )
        {
            perror( "sendto() ERROR" );
            exit( 5 );
        }
    }
   
    shutdown( socket_, SHUT_RDWR );
}
Zdjęcia:
https://i.imgur.com​/WX2URFa.png/
https://i.imgur.com/W13H2We.png
P-170728
darko202
» 2018-04-18 09:56:59
Próbujesz utworzyć połączenie klient-serwer
to samo z siebie nie tworzy połączenia sieciowego, ale wykorzystuje istniejące już połączenie sieciowe.
tworzony jest port do komunikacji.

wymaga ona aplikacji uruchomionej na serwerze
i aplikacji opartej na kliencie

i wtedy np.
serwer wysyła COŚ przez utworzony przy użyciu socketa port
klient odbiera to COŚ po tym porcie

na zdjęciach widzę potwierdzenie istnienie połączenia sieciowego
i wysyłanie tego COŚ "Message"
nie widać gdzie to odbierasz


przeczytaj
http://cpp0x.pl/kursy​/Kurs-SFML-2-x-C++​/Dodatkowe-materialy​/Komunikacja-sieciowa-TCP-i-UD​P​/515
i poszukaj na
https://www.bing.com/search​?q=komunikacja+oparta+na+socket​ach+c%2B%2B​&qs=n&form=QBRE&sp=-1​&pq=komunikacja+oparta+na+socke​tach+c%2B%2B​&sc=0-35&sk=​&cvid=917E531919D14F7593AD5184ABFCE9CE

gdybym nie zrozumiał twojego pytanie 
doprecyzuj co dokładnie robisz ?
czego się spodziewasz ?

P-170733
« 1 »
  Strona 1 z 1