나는 안드로이드에서 소켓 연결을 작성했고 그것을 통해 XML을 보내려고합니다. 다음은 XML을 보낼 수있는 다른 방법이 있나요 .. 소켓 연결에서 xml을 보내는 방법
@Override
protected Void doInBackground(Void... params) {
String modifiedSentence;
try {
String message ;
message ="<?xml version=\"1.0\"?><body><sendrecv> <eventList><eventName>event</eventName> <eventName>event</eventName> <eventName>event</eventName></eventList> </sendrecv></body>";
Log.d("String to send",message.toString());
Socket clientSocket = new Socket("192.168.0.200", SERVERPORT);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
Log.d(TAG,"TCP Connected.");
outToServer.writeBytes(message);
modifiedSentence = inFromServer.readLine();
Log.d(TAG,modifiedSentence);
Log.d(TAG,"sucess");
/* clientSocket.close();*/
} catch (Exception e) {
Log.d("TCP Error: ",e.toString());
}
return null;
}
내가이 데이터가 단절이 요청에 응답하지 않기 때문에 서버로 보낼 수 없다는 생각 프로그래밍 내 소켓인가? 당신이 스트림을 출력 할 필요가 같은 C 코드 작업 AndroidManifest를 권한
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
에서
권한 ++ 플랫폼 QT 클라이언트 측
int received;
unsigned char header [4];
int len;
int sent;
unsigned char recvbuf[2048];
unsigned int payload_len;
sprintf (sendbuf, "%s", "<?xml version=\"1.0\"?>"\
"<body>"\
"<sendrecv>"\
"<eventList>"\
"<eventName>event1</eventName>"\
"<eventName>event2</eventName>"\
"<eventName>event3</eventName>"\
"</eventList>"\
"</sendrecv>"\
"</body>");
}
len = strlen ((const char*)sendbuf);
header[0] = (unsigned char) (len >> 24);
header[1] = (unsigned char) (len >> 16);
header[2] = (unsigned char) (len >> 8);
header[3] = (unsigned char) len;
weht_writen(s.clientfd, header,4);
weht_writen(s.clientfd, (unsigned char*)sendbuf,len);
memset (header, 0x0, 4);
received= weht_readn(s.clientfd,header,4);
if(received<0)
{
qDebug()<<"Failed to read registration message header";
return;
}
payload_len = header[0];
payload_len <<= 8;
payload_len |= header[1];
payload_len <<= 8;
payload_len |= header[2];
payload_len <<= 8;
payload_len |= header[3];
received= weht_readn(s.clientfd,recvbuf,payload_len);
응용 프로그램을 네트워크에 연결할 수 있도록 매니페스트 파일에 사용 권한을 설정 했습니까? –
서버가 데이터를 어떻게 읽습니까? 그것이 선을 기다리고 있다면, 당신은 선을 보내지 않을 것입니다. – EJP
서버가 전체 XML을 예상하고 그 서버가 그 문자를 읽어야하는 문자 수를 알 수 있기 전에 그 대신에 응답을 보냅니다 ... 내 질문은이 문자를 읽는 서버에 말하는 방법입니다 – MKY