1. 程式人生 > >TCP send 傳送大資料量的問題

TCP send 傳送大資料量的問題

 

int sendTCP(SOCKET& socketfd,TString strXml)
{
 int iContLen = strXml.length();
 int iSendLen = 0;
#ifndef WIN32

 fd_set scanSet;
 FD_ZERO(&scanSet);
 FD_SET(socketfd,&scanSet);

 time_t tBeg, tEnd;
 time(&tBeg);

 // 最多等待 20 毫秒
 struct timeval waitTime;
 waitTime.tv_sec  = 0;
 waitTime.tv_usec = 20000;
 int tmp = -1;


 while(iSendLen < iContLen)
 {
  int iLen  = send(socketfd,strXml.substr(iSendLen).c_str(),iContLen - iSendLen,0);
  if (iLen > 0 )
  {//
   iSendLen += iLen;
   //printf("\n send %d/%d",iSendLen,iContLen);
   //更新時間
   time(&tBeg);
  }
  else
  {
   //printf("\n send failed %d/%d",iSendLen,iContLen);
   time(&tEnd);
   if (tEnd - tBeg> 3)
   {//連續3秒不可寫 認為出現錯誤
    printf("\n dTimeEnd - dTimeBeg  > 1");
    return -1;
   }
   usleep(200);
  }
 

 }
#endif
 return iSendLen;
   
}

相關推薦

TCP send 傳送料量的問題

  int sendTCP(SOCKET& socketfd,TString strXml) {  int iContLen = strXml.length();  int iSendLen = 0; #ifndef WIN32  fd_set scanSet;  

LwIP用TCP連線方式在料量比較協議棧卡死

這段時間用STM32移植LwIP做語音傳輸。但是遇到一個問題困擾許久,在使用TCP方式做一個client去連線server,由於資料量比較大經常在連線一個多小時候就出現斷線而 也ping不通。接下來我們看一下這個問題是怎麼出現的和他的決絕方法(小白一枚,說錯的地方還望指正哈

關於料量阻塞式傳送卡住的解決方法

最近做一個伺服器間的通訊 通訊客戶端使用阻塞方式傳送資料,傳送頻率較低時,一切正常。 但是頻率提高後就會導致send函式長時間保持阻塞狀態。 接收端伺服器採用epoll模型,接收緩衝區設成了0。 研究好了好幾天沒有答案,經過各種嘗試之後發現,把接收緩衝區設成非零(我是取消了

料量的方案收集--AdMaster 如何駕馭百億級Key實時Redis 叢集

注:本文轉載自公眾號AdMaster 作為技術驅動的營銷資料公司,AdMaster每天處理超過100億的資料請求,每天對1000億資料進行上千種維度計算,每天增加超過5T資料量,為來自各行業的客戶提供7*24小時資料應用服務。在這樣領先的技術佈局下,無論是資料實時性還是資料安全,都能得到

四種快排與兩種歸併和堆和插入排序 料量執行時間比較

#include"iostream" #include"iomanip" #include"stdlib.h" #include"time.h" #include"string" /*由於我電腦記憶體有限所以資料量最大能執行在20w*/ //三路快排適用於有大量重複值的資

資料新增非同步解析重新整理料量redis (——)(五)redisutils

首先要在配置檔案注入這個bean     這也是我非同步重新整理獲取bean用的redisutils工具類: import javax.servlet.ServletContext; import javax.servlet.http.HttpServl

資料新增非同步解析重新整理料量redis (——)(四)非同步重新整理reids主

重新整理redis方法的bean: public class MethodAndParameter {     private String methodName;//方法名          pr

資料新增非同步解析重新整理料量redis (——)(三)Spring Boot普通類呼叫bean【從零開始學Spring Boot】

部落格分類:  從零開始學Spring Boot 從零開始學Spring BootSpring Boot普通類呼叫bean    【視訊&交流平臺】 à SpringBoot視訊 http://stu

資料新增非同步解析重新整理料量redis (——)(二) SpringBoot之CommandLineRunner介面和ApplicationRunner介面

在spring boot應用中,我們可以在程式啟動之前執行任何任務。為了達到這個目的,我們需要使用CommandLineRunner或ApplicationRunner介面建立bean,spring boot會自動監測到它們。這兩個介面都有一個run()方法,在實現介面時需要覆蓋該方法,並使用@

資料新增非同步解析重新整理料量redis (——)(一)Java Collection之Queue佇列

Queue介面與List、Set同一級別,都是繼承了Collection介面。LinkedList實現了Queue接 口。Queue介面窄化了對LinkedList的方法的訪問許可權(即在方法中的引數型別如果是Queue時,就完全只能訪問Queue介面所定義的方法 了,而不能直接訪問 Linke

料量單表在不同表名列名間的資料遷移

(windows Server 2008 R2+oracle 11g) 單表資料1.5億條記錄,90個欄位,檔案大小70G 處理思路:源端單表exp,目標端單表imp,再通過欄位對應關係轉入到目標表(不同表名、列名) exp username1/password1 buffer=6400

afs在料量時查詢優化

afs查詢,mule報錯的問題 1.mule報錯的原因 a)mule預設請求響應時間為10s,當請求返回的時間超過10秒就會報錯 2.導致請求時間過長的原因 a)欄位沒有建索引,count(*)統計記錄總數耗時過長(283W記錄統計耗時8-9s) b)一次性請求數量過多(經測試500條資料4

料量表的查詢優化及索引使用

一、對於運算邏輯,儘可能將要統計的各專案整合在一個查詢語句中計算,而不是用分組條件或分專案呼叫多個查詢語句,而後在程式碼裡計算結果。 二、查詢語句的優化,諸如不用"select *"、多表關聯查詢時新增別名於查詢欄位上、避免使用in、not in關鍵字、非去除重複時用union all替換uni

料量 Mybatis 分頁外掛Count語句優化

前言 當在大數量的情況下,進行分頁查詢,統計總數時,會自動count一次,這個語句是在我們的查詢語句的基礎上巢狀一層,如: SELECT COUNT(*) FROM (主sql) 這樣在資料量大的情況下,會出問題,很容易cpu就跑滿了 優化 在mapper.xml

基於Apache POI匯出(百萬級)料量Excel的實現

POI匯出大資料量excel (注:專案原始碼及後續更新請點選) 1、ExcelUtils類: package Utils; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObje

POI操作料量Excel時,new SXSSFWorkbook(1000)例項化失敗問題解決

專案上使用POI匯出資料庫大資料量為Excel時,發現程式碼執行時 例項化工作簿 失敗! SXSSFWorkbook workbook = new SXSSFWorkbook(100); trycatch問題程式碼後,在debug中也並未進入異常處理,而是直接進入了finally 最後

JDK8 switch使用字串比if else 效率高,親測料量資料下

for (TemplateFormVO templateFormVO:templateFormVOS){ formid=String.valueOf(templateFormVO.getFormId()); formId=templateFormVO.getFormI

mysql料量下優化

1 優化sql和索引2 增加快取如:redis3 主從複製或主主複製,讀寫分離4 利用mysql自帶分割槽表5 先做垂直拆分,將一個大系統分為多個小系統,也就是分散式6 水平切分,要選擇一個合理的sharding key,為了有好的查詢效率,表結構也要改動,做一定的冗餘,應用也要改,sql中儘量帶shardi

Hadoop學習筆記—4.初識MapReduce 一、神馬是高大上的MapReduce   MapReduce是Google的一項重要技術,它首先是一個程式設計模型,用以進行料量的計算。對於資料

Hadoop學習筆記—4.初識MapReduce 一、神馬是高大上的MapReduce   MapReduce是Google的一項重要技術,它首先是一個程式設計模型,用以進行大資料量的計算。對於大資料量的計算,通常採用的處理手法就是平行計算。但對許多開發

料量下高併發同步

 對於我們開發的網站,如果網站的訪問量非常大的話,那麼我們就需要考慮相關的併發訪問問題了。而併發問題是絕大部分的程式設計師頭疼的問題, 但話又說回來了,既然逃避不掉,那我們就坦然面對吧~今天就讓我們一起來研究一下常見的併發和同步吧。    為了更好的理解併