第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

請問在vc socket中,有什么辦法可以讓recv返回0值嗎?

請問在vc socket中,有什么辦法可以讓recv返回0值嗎?

C C++
波斯汪 2021-11-03 11:07:45
一個(gè)阻塞的tcp/ip文件傳輸程序,當(dāng)我發(fā)送端read()為0時(shí)退出發(fā)送函數(shù)模塊,send()函數(shù)也正常返回0了,但是接收端一定要等到發(fā)送端的closesocket()函數(shù)運(yùn)行完之后recv()函數(shù)才返回0,否則就一直卡在recv()那里。求用什么辦法可以在不關(guān)閉接收端socket的情況下recv正常返回0好讓我的程序正常退出?我做一個(gè)多文件的網(wǎng)絡(luò)傳輸,用阻塞式的TCP/IP套接字,請問怎么用select()函數(shù)判斷每次發(fā)完一個(gè)文件再發(fā)另外一個(gè)?現(xiàn)在的問題很令人痛苦,接收端每次都不能正常返回,要不然就是recv()卡住,要不然就是send那邊把其他文件的字節(jié)也傳到recv端第一個(gè)文件里面。
查看完整描述

3 回答

?
白豬掌柜的

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊

首先可以將RECV函數(shù)設(shè)置為非阻塞模式。這個(gè)就不多說了。
對于另一個(gè)問題,發(fā)送端每次發(fā)送的字節(jié)數(shù)要和接收端每次接收的內(nèi)容大小一致。比如接收端每次收4K,發(fā)送端也必須是每次發(fā)4K,如果發(fā)送的內(nèi)容實(shí)際小于4K,就用空字符補(bǔ)。

查看完整回答
反對 回復(fù) 2021-11-07
?
繁星點(diǎn)點(diǎn)滴滴

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊

你可以用異步的IO模式,比如select模式,overlappped模式,事件模式,甚至IOCP。這樣就不會存在recv被卡住的問題了,性能也極大的提高。
同步的recv返回0,表示連接正常關(guān)閉, 你想讓recv返回0卻保持連接這是很難的。

查看完整回答
反對 回復(fù) 2021-11-07
?
汪汪一只貓

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊

用select測試.
select功能很強(qiáng), 但用起來有點(diǎn)復(fù)雜, 很多人說它不好用, 其實(shí)是不會用, 希望你別說它不好用.
======================================================
不論是不是Blocking模式, select都可以用來檢測:
1)連接是否成功;
2)是不是可以發(fā)送;
3)是不是可以接收;
4)對方是否斷開連接

=====================================================
"send那邊把其他文件的字節(jié)也傳到recv端第一個(gè)文件里"
你的程序設(shè)計(jì)的問題, 和socket怎么用無關(guān).



查看完整回答
反對 回復(fù) 2021-11-07
  • 3 回答
  • 0 關(guān)注
  • 493 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號