C ++サーバーTCPを使用してAndroidクライアントにメッセージを送信する

owen

問題

C ++サーバーからAndroidクライアントにパケットを送信しようとしていますが、Androidクライアントがパケットを受信して​​いません。私はAndroidでreadlineとreadbufferの両方で異なることを試しましたが、これらは何も返しません。また、メインアクティビティページからパケットを受信するためにメソッドを呼び出しています。

C ++コード

int numBytes;  // the number of bytes sent

// Sends the message to the connected host
try 
{
    string sendMsg = "This is a test \r\n";

    if (numBytes = send(socketId, sendMsg.c_str(), sendMsg.size(), 0) == -1)
    {

            int errorCode = 0;
            string errorMsg = "error calling send():\n";
            detectErrorSend(&errorCode,errorMsg);
            CExceptionEx socketSendException(errorCode,errorMsg);
            throw socketSendException;
    }
}
catch(CExceptionEx& excp)
{
    excp.response();
    exit(1);
}

return numBytes;

Androidコード

public void RecievePacket()
{
    try 
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(mSock.getInputStream()));
        String test = br.readLine();

       /* BufferedInputStream input = new BufferedInputStream(mSock.getInputStream());
        byte[] buffer = new byte[10]; // 10 bytes buffer
        int bytesRead = 0;
        while( (bytesRead=input.read(buffer)) !=-1 ) { // read up to 10 bytes
            String str = new String(buffer,0,bytesRead); // convert bytes to String using default encoding
            //System.out.println("Data received: " + str);

        }
        */


    }
    catch (Exception ex)
    {
    }

}

注意

コメント付きのコードブロックは、メッセージを受信しようとしたもう1つの方法です。また、AndroidからC ++にパケットを送信できることにも注意してください。

編集

send()は0バイトを送信していますが、Androidからパケットを受信できるため、接続が必要です。

Brenns10

あなたが私たちに与えたコードの一部ではない何かが間違っているに違いありません。私はあなたのコードを使用して自分のコンピューターで実行する自分の最小限の例を書きました、そしてすべてが期待通りに働きました。これがコンピュータで正しく実行されるかどうかを確認します(C ++、次にJavaを実行します)。また、C ++コードで不足していることがあるかどうかを確認してください。

socket.cpp :(私はCプログラマーなので、提供したコードにはC ++を使用しました)。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#include <string>

void connection(int sock)
{
  // Pretty much your C++ code verbatim.
  std::string sendMsg = "This is a test \r\n";
  int amt = send(sock, sendMsg.c_str(), sendMsg.size(), 0);
  printf("Send %d bytes.\n", amt);
  close(sock);
}

int main(int argc, char *argv[])
{
  int sock, csock;
  struct sockaddr_in sin;
  char *host = "127.0.0.1";
  unsigned short port = 1234;

  if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
    perror("socket");
    exit(EXIT_FAILURE);
  }

  sin.sin_family = AF_INET;
  sin.sin_port = htons(port);
  if (inet_pton(AF_INET, host, &sin.sin_addr) != 1) {
    perror("inet_pton");
    exit(EXIT_FAILURE);
  }

  if (bind(sock, (struct sockaddr*) &sin, sizeof(sin)) != 0) {
    perror("bind");
    exit(EXIT_FAILURE);
  }

  if (listen(sock, SOMAXCONN) != 0) {
    perror("listen");
    exit(EXIT_FAILURE);
  }

  if ((csock = accept(sock, NULL, NULL)) == -1) {
    perror("accept");
    exit(EXIT_FAILURE);
  }

  connection(csock);
  close(sock);
  return EXIT_SUCCESS;
}

SockTest.java:

import java.net.Socket;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class SockTest {
    public static void main(String[] args) {
        try {
            Socket sock = new Socket("127.0.0.1", 1234);

            // Your Java Code Verbatim:
            BufferedReader br = new BufferedReader(new InputStreamReader(sock.getInputStream()));
            String test = br.readLine();

            System.out.println(test);
            sock.close();
        } catch (Exception ex) {}
    }
}

C ++の出力:

$ ./socket
Send 17 bytes.

Javaの出力:

$ java SockTest
This is a test 

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C# TCP クライアントはメッセージを送信しますが、サーバーはメッセージを受信していません

分類Dev

c#containgspacesを使用してクライアントからサーバーにメッセージを送信する方法

分類Dev

C ++のWebSocketクライアントとしてサーバーにメッセージを送信するにはどうすればよいですか?

分類Dev

C#TCPサーバーは、Pythonクライアントから送信された2つのメッセージを同時に受信します

分類Dev

C#でsignalRを使用してクライアントに毎秒メッセージを送信します

分類Dev

サーバーはCのソケットを介してクライアントにメッセージを送信できません

分類Dev

TCP c#を使用して、サーバーから特定のクライアントにパケットを送信します

分類Dev

C ++標準ライブラリネットワーキングTSを使用してサーバーとクライアント間でメッセージを送信する方法

分類Dev

C#クライアントからサーバーへのデータ転送サーバーは以前のクライアントメッセージを受信しています非同期サーバー-非同期クライアント

分類Dev

Cのソケットを使用してクライアントからサーバーにファイルを送信する

分類Dev

Netcat-C言語を使用してマイクロコントローラーにメッセージを送信する

分類Dev

TCPクライアント(java)がTCPサーバー(C#)からメッセージを受信しませんでした

分類Dev

C#のさまざまな機能からアクティブなtcpクライアントにメッセージを送信します

分類Dev

C TCP / IPソケット:クライアントソケットからサーバーソケットへの入力を同期して交互にする方法

分類Dev

名前付きパイプを使用してC ++サーバーからC#クライアントに画像フレームを送信する

分類Dev

c#ネットコアからアンマネージドc ++ dllを介してWindowsメッセージをサブスクライブする

分類Dev

C#でクライアントの画面にウェルカムメッセージを送信する

分類Dev

C#TCPサーバーとC ++ TCPクライアントでメッセージを受信できません

分類Dev

クライアント側でこのエラーメッセージのコンテンツを使用するために、C#からAjaxにエラーメッセージを送信するにはどうすればよいですか?

分類Dev

PHP-C#TCPクライアント/サーバー文字列を送信する方法は?

分類Dev

c#マウスイベントを使用してサーバーからクライアントにフラグを送信します

分類Dev

opencvを使用してC ++サーバーから送信されたJavaクライアントでMatオブジェクトを作成します

分類Dev

TCP経由でandroid(ソケットクライアント)をc ++(ソケットサーバー)に接続します

分類Dev

cでTCPを使用するマルチユーザーチャットサーバー。複数のクライアントにデータを送信する方法は?

分類Dev

Microsoft-Graph C#クライアントライブラリを使用してメッセージを削除する方法はありますか?

分類Dev

C#非同期ソケットサーバーはクライアントから1つのメッセージのみを受信します

分類Dev

サーバーがc構造体としてデータを送信しているときに、クライアントのC ++構造体にバッファーをタイプキャストできますか?

分類Dev

Objective-Cを使用してiOSアラートメッセージに改行を追加する

分類Dev

C#でSMTPクライアントを使用してメールを送信する

Related 関連記事

  1. 1

    C# TCP クライアントはメッセージを送信しますが、サーバーはメッセージを受信していません

  2. 2

    c#containgspacesを使用してクライアントからサーバーにメッセージを送信する方法

  3. 3

    C ++のWebSocketクライアントとしてサーバーにメッセージを送信するにはどうすればよいですか?

  4. 4

    C#TCPサーバーは、Pythonクライアントから送信された2つのメッセージを同時に受信します

  5. 5

    C#でsignalRを使用してクライアントに毎秒メッセージを送信します

  6. 6

    サーバーはCのソケットを介してクライアントにメッセージを送信できません

  7. 7

    TCP c#を使用して、サーバーから特定のクライアントにパケットを送信します

  8. 8

    C ++標準ライブラリネットワーキングTSを使用してサーバーとクライアント間でメッセージを送信する方法

  9. 9

    C#クライアントからサーバーへのデータ転送サーバーは以前のクライアントメッセージを受信しています非同期サーバー-非同期クライアント

  10. 10

    Cのソケットを使用してクライアントからサーバーにファイルを送信する

  11. 11

    Netcat-C言語を使用してマイクロコントローラーにメッセージを送信する

  12. 12

    TCPクライアント(java)がTCPサーバー(C#)からメッセージを受信しませんでした

  13. 13

    C#のさまざまな機能からアクティブなtcpクライアントにメッセージを送信します

  14. 14

    C TCP / IPソケット:クライアントソケットからサーバーソケットへの入力を同期して交互にする方法

  15. 15

    名前付きパイプを使用してC ++サーバーからC#クライアントに画像フレームを送信する

  16. 16

    c#ネットコアからアンマネージドc ++ dllを介してWindowsメッセージをサブスクライブする

  17. 17

    C#でクライアントの画面にウェルカムメッセージを送信する

  18. 18

    C#TCPサーバーとC ++ TCPクライアントでメッセージを受信できません

  19. 19

    クライアント側でこのエラーメッセージのコンテンツを使用するために、C#からAjaxにエラーメッセージを送信するにはどうすればよいですか?

  20. 20

    PHP-C#TCPクライアント/サーバー文字列を送信する方法は?

  21. 21

    c#マウスイベントを使用してサーバーからクライアントにフラグを送信します

  22. 22

    opencvを使用してC ++サーバーから送信されたJavaクライアントでMatオブジェクトを作成します

  23. 23

    TCP経由でandroid(ソケットクライアント)をc ++(ソケットサーバー)に接続します

  24. 24

    cでTCPを使用するマルチユーザーチャットサーバー。複数のクライアントにデータを送信する方法は?

  25. 25

    Microsoft-Graph C#クライアントライブラリを使用してメッセージを削除する方法はありますか?

  26. 26

    C#非同期ソケットサーバーはクライアントから1つのメッセージのみを受信します

  27. 27

    サーバーがc構造体としてデータを送信しているときに、クライアントのC ++構造体にバッファーをタイプキャストできますか?

  28. 28

    Objective-Cを使用してiOSアラートメッセージに改行を追加する

  29. 29

    C#でSMTPクライアントを使用してメールを送信する

ホットタグ

アーカイブ