通过套接字将字符串发送到客户端

时间:2013-10-08 20:27:33

标签: c++ sockets

以下代码是来自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为我提供了一个带有值(record,fname,lname和phonenum)的结构数组

数组中的当前数据是:

1000 steve kit 212
1001 joe smo 12
1002将walt 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);
}

套接字已正确设置,但它不会将数据发送到客户端进行打印,是否有人知道出了什么问题?

1 个答案:

答案 0 :(得分:1)

readContent正在从哪里读取数据?因为这条线看起来非常可疑

for(int j = 0; j < readContent().size(); j++)

当然应该是

for(int j = 0; j < getList.size(); j++)

因为否则你将多次打电话给readContent