-1
下面的代碼是從server.c片段發送通過插座的字符串客戶
void list(int s)
{
vector<data> getList = readContent();
string output = "";
ostringstream conv;
for(int j = 0; j < readContent().size(); j++)
{
conv << getList[j].record;
output += conv.str();
output += " ";
output += getList[j].fName;
output += " ";
output += getList[j].lName;
output += " ";
output += getList[j].phoneNum;
output += "\n";
send(s, (char *)output.c_str(), strlen((char *)output.c_str()), 0);
}
}
readContent給我結構的與值的陣列(記錄,FNAME,L-NAME和PHONENUM)
陣列中的當前數據是:
1000史蒂夫套件212
1001喬SMO 12
1002將沃爾特33
下面的代碼是從client.c
/* main loop; get and send lines of text */
while (fgets(buf, sizeof(buf), stdin)) {
buf[MAX_LINE -1] = '\0';
len = strlen(buf) + 1;
send (s, buf, len, 0);
recv (s, rbuf, sizeof(rbuf), 0);
printf(rbuf);
}
的插座設置正確的摘要,但它不是將數據發送到客戶端打印,沒有人知道是怎麼回事了?
你應該檢查'send'和'recv'的返回碼。此外,這些功能不能確保發送或接收整個緩衝區,因此您必須使用循環來發送和接收數據。此外,您總是將數據追加到'output',並且永遠不會在循環中重置此變量的值,即發送後。 – harpun