读取句柄错误

时间:2011-06-21 04:47:51

标签: c++ networking

            int dataLength;
            int readLength = read(conn->getFd(), &dataLength, HEADER_SIZE);
            printf("Header read %d \n", readLength);

            if(readLength == 0){
                removeClient(conn);
                close(conn->getFd());
            }
            else {
                /*
                 * Do not parse anything here.
                 * Pass the raw data to the work handler.
                 */
                char *buf = new char[dataLength+1];
                int dataReadLength = read(conn->getFd(), buf, dataLength);
                printf("Data read %d \n", dataReadLength);

                printf("ServerManager::eventAcceptLoop, A message has been received \n");
                addWork(conn->getFd(), buf, dataReadLength);

我正在进行网络编程,我有这段代码。它在localhost中工作正常(没有错误发生)但我相信如果我在现实世界的网络上尝试它会爆炸。问题是我不是网络编程的专家,也不确定我应该添加哪个错误句柄。它还必须找到一个包含特定错误处理的好例子或教程。

如果你们能为我提供一个可能有助于解决错误的好例子或教程,我将非常感激。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您需要分析read()返回-1的情况。

查看本教程/参考资料:Beej's Guide to Network Programming 这是我的网络编程参考资料。