ich ein Java-Socket-Server und c Socket-Client, hier sind der Codesenden und recv auf Sockel
Java-Socket-Server:
int Send_Request(String s) {
try {
os = socket.getOutputStream();
os.write(s.getBytes());
os.flush();
Log.d(tag,"Data = " + s);
return 0;
} catch (IOException e) {
// TODO Auto-generated catch block
Log.e(tag,"Send Request Error");
return -1;
}
C Socket-Client:
void* recv_request()
{
int i,in;
char buf[1024];
while(1)
{
if ((in = read(sockfd, buf, strlen(buf))) != -1)
{
LOGD("Received = %s ...",buf);
sendServerCutText(buf);
memset(buf,0,strlen(buf));
}
}
}
Das Problem ist .. wenn ich vom Server senden, blockiert es auf Flush(), kann der Client c nicht empfangen bis Es wird ein weiterer Send_Request aufgerufen.
wo ist das Problem ??
Warum spülen Sie? –
Sie können 'strlen (buf)' nur aufrufen, wenn 'buf' eine Zeichenfolge im C-Stil enthält. Sie erhalten beliebige Binärdaten, keine C-Style-Strings. Und du nennst sogar "strlen", bevor du irgendwelche Daten hast! –