當前位置:編程學習大全網 - 編程軟體 - 我在使用CSocket::Send(字符,長度);發送數據的時候,怎樣把握長度的設置?怎麽才能得到長度的最大值?

我在使用CSocket::Send(字符,長度);發送數據的時候,怎樣把握長度的設置?怎麽才能得到長度的最大值?

可以使用多線程傳送同時設置緩沖區大小

3.在send(),recv()過程中有時由於網絡狀況等原因,發收不能預期進行,而設置收發時限:

int nNetTimeout=1000;//1秒

//發送時限

setsockopt(socket,SOL_S0CKET,SO_SNDTIMEO,(char *)&nNetTimeout,sizeof(int));

//接收時限

setsockopt(socket,SOL_S0CKET,SO_RCVTIMEO,(char *)&nNetTimeout,sizeof(int));

4.在send()的時候,返回的是實際發送出去的字節(同步)或發送到socket緩沖區的字節

(異步);系統默認的狀態發送和接收壹次為8688字節(約為8.5K);在實際的過程中發送數據

和接收數據量比較大,可以設置socket緩沖區,而避免了send(),recv()不斷的循環收發:

// 接收緩沖區

int nRecvBuf=32*1024;//設置為32K

setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));

//發送緩沖區

int nSendBuf=32*1024;//設置為32K

setsockopt(s,SOL_SOCKET,SO_SNDBUF,(const char*)&nSendBuf,sizeof(int));

5. 如果在發送數據的時,希望不經歷由系統緩沖區到socket緩沖區的拷貝而影響

程序的性能:

int nZero=0;

setsockopt(socket,SOL_S0CKET,SO_SNDBUF,(char *)&nZero,sizeof(nZero));

6.同上在recv()完成上述功能(默認情況是將socket緩沖區的內容拷貝到系統緩沖區):

int nZero=0;

setsockopt(socket,SOL_S0CKET,SO_RCVBUF,(char *)&nZero,sizeof(int));

  • 上一篇:秦皇島橋東北裏小區周邊配套怎麽樣?
  • 下一篇:我的科魯茲能打著車 但掛不上檔了 怎麽回事 急急急
  • copyright 2024編程學習大全網