亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪(fǎng)問(wèn)板塊 發(fā)新帖
查看: 2471 | 回復(fù): 2
打印 上一主題 下一主題

自己編寫(xiě)的網(wǎng)絡(luò)通信程序?yàn)楹嗡俾手挥?Mbps? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-01-13 17:11 |只看該作者 |倒序?yàn)g覽
本帖最后由 whyliyi 于 2011-01-13 17:13 編輯

自己編寫(xiě)了通信程序,基本的通信程序如下:

  1. /*服務(wù)器*/
  2. while(1)
  3. {
  4.         FD_SET(fdListen, &fdset);
  5.         for(i=0; i<MAX_NODE; i++)
  6.         {
  7.                 FD_SET(fdRecv[i], &fdset);
  8.                 max_fd = max_fd>fdRecv[i] ? max_fd : fdRecv[i];
  9.         }
  10.         overtime.tv_sec = 2;
  11.         overtime.tv_usec = 0;
  12.         ret = select(max_fd+1, &fdset, NULL, NULL, &overtime);
  13.         if( 0 == ret )
  14.         {
  15.                 printf("ret = 0\n");
  16.                 continue;
  17.         }
  18.         else if( -1 == ret )
  19.         {
  20.                 printf("Something Unexpected happened!...\n");
  21.                 break;
  22.         }
  23.         if( SOCK_STREAM == fdType && index <= MAX_NODE && FD_ISSET(fdListen, &fdset) )
  24.         {
  25.                 for( i=0; i<MAX_NODE; i++ )
  26.                 {
  27.                         if( 0 == fdRecv[i] &&(fdRecv[i] = AcceptSock(&fdListen, &serAddr)) )
  28.                         {
  29.                                 FD_SET(fdRecv[i], &fdset);
  30.                                 max_fd = max_fd>fdRecv[i] ? max_fd : fdRecv[i];
  31.                                 index++;
  32.                                 break;
  33.                         }
  34.                 }
  35.         }
  36.         else
  37.         {
  38.                 for( i=0; i<MAX_NODE; i++ )
  39.                 {
  40.                         //printf("\\\\");
  41.                         if( FD_ISSET(fdRecv[i], &fdset) )
  42.                         {
  43.                                 //printf("????");
  44.                                 len = -1;
  45.                                 cliLen = sizeof(cliAddr);
  46.        
  47.                                 len = RecvMsg(&fdRecv[i], msgRecv, sizeof(msgRecv), 0, (SA*)&cliAddr);
  48.                                 if( len < 0 )                        //如果<0則認(rèn)為連接已經(jīng)斷開(kāi)
  49.                                 {
  50.                                         FD_CLR(fdRecv[i], &fdset);
  51.                                         fdRecv[i] = 0;
  52.                                         index --;
  53.                                         gettimeofday(&end, NULL);
  54.                                         timeuse = 1000000 * (end.tv_sec - start.tv_sec) + end.tv_usec - start.tv_usec;
  55.                                         timeuse /= 1000000;
  56.                                         printf("Time:%f, Total Bits:%f, %fkbps\n", timeuse, total_bits, total_bits/(1000*timeuse));
  57.                                         break;
  58.                                 }
  59.                                 total_packets++;
  60.                                 if( 1 == total_packets )
  61.                                 {
  62.                                         gettimeofday(&start, NULL);
  63.                                 }
  64.                                 total_bits += 8*strlen(msgRecv);
  65.                                 break;
  66.                         }
  67.                 }
  68.         }
  69. }
復(fù)制代碼
客戶(hù)端數(shù)據(jù)不間斷發(fā)送,采用TCP連接。
兩臺(tái)PC通過(guò)11G網(wǎng)卡連接。在客戶(hù)端發(fā)送了60000包長(zhǎng)度為1000字節(jié)的數(shù)據(jù),結(jié)果為:
Time:83.566383, Total Bits:480014432.000000, 5744.109206kbps
表示所用時(shí)間為83.566383秒,總共發(fā)送的bit數(shù)為480014432bits,平均速率為5744.109206kbps。

但是,用同樣的網(wǎng)卡、同樣的距離,用飛鴿傳書(shū)傳送一個(gè)文件的速率為2MB/s,即2*8=16Mbps,這是為何?

按理說(shuō),飛鴿是一個(gè)協(xié)議,數(shù)據(jù)的接收發(fā)送都需要解包,而我的發(fā)的純char數(shù)據(jù)的數(shù)據(jù),速率應(yīng)該不會(huì)比我的快才對(duì)阿。

請(qǐng)高手指教!

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2011-02-01 23:43 |只看該作者
你的代碼小毛病不少,為什么做個(gè)附件的壓縮包把它發(fā)全了,還遮遮掩掩的?速率的問(wèn)題有時(shí)候不是一眼就能看出來(lái)的,首先你有沒(méi)有測(cè)試過(guò)功能,確保你收到的數(shù)據(jù)就是你發(fā)的?

你的接收Buffer是多大?socket讀數(shù)據(jù)會(huì)返回?cái)?shù)據(jù)長(zhǎng)度,你為什么還用strlen來(lái)得一遍長(zhǎng)度?就算你發(fā)的是字符串,你是不是把后面的0一定發(fā)了?而且TCP不是你發(fā)的長(zhǎng)度每次是1000字節(jié),接收方每一次recv()就返回一次發(fā)送,你的接收用的函數(shù)是如何封裝的?

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2011-02-11 09:04 |只看該作者
新年快樂(lè)
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP