2011-06-21 48 views
1
  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

[讀取句柄問題..](http://stackoverflow.com/questions/6420164/read-handle-problem)的可能重複。甚至在不到1小時前提問。 – Nemo

回答

1

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

查看本教程/參考材料:Beej's Guide to Network Programming 這是我的網絡編程參考資料。

+0

還有'read(0)'返回'0'的情況。 – Nemo