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

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

Chinaunix

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

[函數(shù)] 請(qǐng)教一個(gè)TCP SOCKET的簡(jiǎn)單問(wèn)題。各種牛請(qǐng)進(jìn)! [復(fù)制鏈接]

論壇徽章:
1
2015年亞洲杯之巴林
日期:2015-02-05 20:34:47
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2013-03-25 11:33 |只看該作者 |倒序?yàn)g覽
有一種情況:
比如我的接收緩沖一下子來(lái)了3個(gè)數(shù)據(jù)包,A:70字節(jié),B:50字節(jié),C:100字節(jié)。如果我封裝的 socket read 或者直接調(diào)用rcv,如果我傳入的接收長(zhǎng)度是100,那么我收回來(lái)的數(shù)據(jù)是 包A的全部?jī)?nèi)容,和包B的前面30個(gè)字節(jié),這樣處理有問(wèn)題的吧?
像這種情況怎么做?

就是說(shuō)接收緩沖里面的數(shù)據(jù),比你調(diào)用接收接口里面的長(zhǎng)度參數(shù)要大的時(shí)候,這種情況怎么做?

論壇徽章:
1
2015年亞洲杯之巴林
日期:2015-02-05 20:34:47
2 [報(bào)告]
發(fā)表于 2013-03-25 11:35 |只看該作者
是不是要封裝一個(gè) read,用非阻塞socket,如果調(diào)用這個(gè)接口返回的不是 EAGAIN,就再去調(diào)用這個(gè)接口,然后在外層拼接這些讀回來(lái)的buffer?

論壇徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46處女座
日期:2013-10-24 14:25:01酉雞
日期:2014-04-07 11:54:15
3 [報(bào)告]
發(fā)表于 2013-03-25 11:42 |只看該作者
拆包,哥哥.

百度:TCP粘包.

論壇徽章:
1
2015年亞洲杯之巴林
日期:2015-02-05 20:34:47
4 [報(bào)告]
發(fā)表于 2013-03-25 12:43 |只看該作者
回復(fù) 3# linux_c_py_php


    哥,TCP好像沒(méi)有包這個(gè)概念阿。不是字節(jié)流嗎?我先baidu以下你的關(guān)鍵字。EPOLL+ ET模式處理這種情況比較麻煩。

論壇徽章:
1
技術(shù)圖書徽章
日期:2014-03-06 15:32:30
5 [報(bào)告]
發(fā)表于 2013-03-25 18:07 |只看該作者
循環(huán)收:
char buffer[100];
int size = 0;
while ( ( size = recv(s, buffer, sizeof(buffer), 0) ) > 0 ) {
    to call data handler;
}
if ( size == 0 ) to call break handler;
else errno or getlasterror() check;

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2013-03-25 19:22 |只看該作者
循環(huán)收啊。 你得知道你要接收的包的長(zhǎng)度,雖然3個(gè)包 你如果接收100字節(jié),那有可能真接收100字節(jié)。

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2013-03-25 20:15 |只看該作者
用tlv吧 , 業(yè)界成熟的辦法, 參加一下谷歌的開源二進(jìn)制buffer

論壇徽章:
1
2015年亞洲杯之巴林
日期:2015-02-05 20:34:47
8 [報(bào)告]
發(fā)表于 2013-03-25 21:44 |只看該作者
回復(fù) 5# selfrun


    這樣不行。

論壇徽章:
1
2015年亞洲杯之巴林
日期:2015-02-05 20:34:47
9 [報(bào)告]
發(fā)表于 2013-03-25 21:45 |只看該作者
回復(fù) 6# tansijie


    就是一種一般情況,系統(tǒng)接受緩沖區(qū)里面的數(shù)據(jù)比用戶接收緩沖要大,處理起來(lái)感覺(jué)確實(shí)比較麻煩。

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2013-03-25 21:50 |只看該作者
回復(fù) 9# sublx
你說(shuō)的這種情況太常見了,服務(wù)端的編程,幾乎100%都遇到這種問(wèn)題,這種問(wèn)題一般都用select , epoll等模型,一次讀取N字節(jié)(N字節(jié)是你認(rèn)為有意義的,或者一包數(shù)據(jù)),如果再有數(shù)據(jù),IO會(huì)通知你完成接受數(shù)據(jù)。


   
您需要登錄后才可以回帖 登錄 | 注冊(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)專區(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