-1
私のC++は、C++クライアント
#include "mbed.h"
#include <TCPSocket.h>
#include <EthInterface.h>
#include "EthernetInterface.h"
#include "string.h"
#include "ESP8266Interface.h"
ESP8266Interface wifi(D1, D0);
void ClearBuffer();
char rbuffer[300];
int rcount;
int main() {
printf("Main\n\r");
printf("Connecting...\n\r");
int ret = wifi.connect("ssid","password", NSAPI_SECURITY_WPA_WPA2);
if (ret != 0) {
printf("\r\n*** WiFi Connection error ***\r\n");
return -1;
}
printf("IP Address is %s\r\n", wifi.get_ip_address());
//create socket
TCPSocket sock;
sock.open(&wifi);
int ret2 = sock.connect("address", port);//ip of google cloud VM
if(ret2 != 0)
{
printf("*** Socket connection error ***\r\n");
return -1;
}
sock.set_blocking(false);
//sending to java server
char sbuffer[] = "Hello from client\r\n\r\n";
int scount = sock.send(sbuffer, sizeof sbuffer);
printf("sent %d [%.*s]\r\n", scount, strstr(sbuffer, "\r\n")-sbuffer, sbuffer);
//recieve from java server
rcount = sock.recv(rbuffer, sizeof rbuffer);
printf("recv %d [%.*s]\r\n", rcount, strstr(rbuffer, "\r\n")-rbuffer, rbuffer);
printf("Done\r\n");
// sock.close();
wifi.disconnect();
}
の下に示し、クライアントとJavaサーバー
System.out.println("Just connected to " + server.getRemoteSocketAddress());
BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream()));
Waiting for client on port 8082...
Hello from client
にJavaサーバからの応答を取得することはできませんが、私は試してみて、このようなC++クライアントに何かを送信するとき:
PrintWriter out = new PrintWriter(new OutputStreamWriter(server.getOutputStream()));
String s = "Hello from server\0";
out.println(s);
out.flush();
受信するためのC++クライアントコード:
rcount = sock.recv(rbuffer, sizeof rbuffer);
printf("recv %d [%.*s]\r\n", rcount, strstr(rbuffer, "\r\n")-rbuffer, rebuffed);
私の出力は、次のとおりです。
sent 22 [Hello from client]
recv -3001 []
誰もが私はCクライアントに送り返す文字列が機能しない理由私が把握助けることができますか?
ありがとうございます。
が、それは、CまたはC++ですか? Cにはクラスがないので、どのようにsockインスタンスで 'send'と' recv'を呼びますか?実際に 'recv'は正の' ssize_t'、 '0'または' -1'を除いて何も返さないようにすべきではありません。私たちはあなたを助けるためにもっとコードを見る必要があります。 – Jack
私はC++を使用しています。コードはmeedsのOSを持っているFRDM K64上で実行されています。 – Shox88