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中工作正常(没有错误发生)但我相信如果我在现实世界的网络上尝试它会爆炸。问题是我不是网络编程的专家,也不确定我应该添加哪个错误句柄。它还必须找到一个包含特定错误处理的好例子或教程。
如果你们能为我提供一个可能有助于解决错误的好例子或教程,我将非常感激。
提前致谢。
答案 0 :(得分:1)
您需要分析read()
返回-1
的情况。
查看本教程/参考资料:Beej's Guide to Network Programming 这是我的网络编程参考资料。