ebusctl: receiving reimplemented
This commit is contained in:
+12
-11
@@ -75,25 +75,26 @@ bool connect(const char* host, int port, bool once)
|
|||||||
|
|
||||||
if (strncasecmp(message.c_str(), "QUIT", 4) != 0 && strncasecmp(message.c_str(), "STOP", 4) != 0) {
|
if (strncasecmp(message.c_str(), "QUIT", 4) != 0 && strncasecmp(message.c_str(), "STOP", 4) != 0) {
|
||||||
char data[1024];
|
char data[1024];
|
||||||
ssize_t datalen = 0;
|
ssize_t datalen;
|
||||||
|
string ss;
|
||||||
|
|
||||||
do {
|
while(1) {
|
||||||
if (datalen > 0) {
|
datalen = socket->recv(data, sizeof(data));
|
||||||
data[datalen] = '\0';
|
|
||||||
cout << data;
|
|
||||||
}
|
|
||||||
|
|
||||||
memset(data, 0, sizeof(data));
|
|
||||||
datalen = socket->recv(data, sizeof(data)-1);
|
|
||||||
|
|
||||||
if (datalen < 0) {
|
if (datalen < 0) {
|
||||||
perror("send");
|
perror("send");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
} while (data[datalen-2] != '\n' || data[datalen-1] != '\n');
|
for (int i = 0; i < datalen; i++)
|
||||||
|
ss += data[i];
|
||||||
|
|
||||||
|
if (ss.length() >= 2 && ss[ss.length()-2] == '\n' && ss[ss.length()-1] == '\n')
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
cout << ss;
|
||||||
|
|
||||||
cout << data;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user