0

スマートフォンで実行されているiOSアプリケーションからデータ(文字列)を受信するJavaサーバーを実装する必要があります。

残念ながら、私は同じようなシナリオで作業したことがないので、誰かがどこから始めればよいか(または調べるための情報リソース)を教えてくれるかどうか疑問に思いました。

ここに、ソケットの作成とデータの送信に使用されるiosコードがあります。

-(bool)createSocket {
    sock = 0;
    if ((sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) {
        NSLog(@"Failed to create socket, error=%s", strerror(errno));
        return false;}
    else {
        return true;
        NSLog(@"Socket created");
    }
}

-(bool) send:(NSString*) msg ipAddress:(NSString*) ip port:(int) p
{
    struct sockaddr_in destination;
    unsigned int echolen;
    int broadcast = 1;

    if (socketCreated==false) {
        NSLog(@"Socket assente");
        return false;
    }
    else
    {
        /* Construct the server sockaddr_in structure */
        memset(&destination, 0, sizeof(destination));

        /* Clear struct */
        destination.sin_family = AF_INET;

        /* Internet/IP */
        destination.sin_addr.s_addr = inet_addr([ip UTF8String]);

        /* IP address */
        destination.sin_port = htons(p);

        /* server port */
        setsockopt(sock,
                   IPPROTO_IP,
                   IP_MULTICAST_IF,
                   &destination,
                   sizeof(destination));
        char *cmsg = [msg UTF8String];
        echolen = strlen(cmsg);

        // this call is what allows broadcast packets to be sent:
        if (setsockopt(sock,
                       SOL_SOCKET,
                       SO_BROADCAST,
                       &broadcast,
                       sizeof broadcast) == -1)
        {
            perror("setsockopt (SO_BROADCAST)");
            exit(1);
        }
        if (sendto(sock,
                   cmsg,
                   echolen,
                   0,
                   (struct sockaddr *) &destination,
                   sizeof(destination)) != echolen)
        {
            printf("Mismatch in number of sent bytes\n");
            return false;
        }
        else
        {
            NSLog([NSString stringWithFormat:@"-> Tx: %@",msg]);
            return true;
        }

    }
}

前もって感謝します

4

1 に答える 1

0

これは、始めるのに良い場所かもしれません:JavaネットワークプログラミングFAQ。また、ネットワークを介して通信している場合、文字列は単なる文字列であることに注意してください。どういうわけかJavaでNSStringを取得しようとしているわけではありません;)

于 2013-03-12T11:00:36.163 に答える