[go] Socket創(chuàng)建之后,listen/connect之前無(wú)法執(zhí)行操作?

使用go的net庫(kù)去創(chuàng)建一個(gè)tcp客戶端連接,使用net.Dial就行,問(wèn)題是Dial返回的是一個(gè)創(chuàng)建好且連接上的connection。如果需要在連接之前對(duì)socket做一些操作,就不行了。
比如這個(gè)問(wèn)題:
https://github.com/golang/go/issues/21820#issue-256441130
這兄弟是在android上面,需要對(duì)socket進(jìn)行一個(gè)“protect"操作,但是必須是在connect之前操作,否則就沒(méi)意義了。
還有這里的問(wèn)題:
https://github.com/golang/go/issues/9661
需要在listen/connect之前設(shè)置一些socket option,或者是需要使用tcp fast open等。
因?yàn)間o只是封裝了最常用的操作,所以針對(duì)一些特殊(但你需要了對(duì)你就是百分百)的操作,就只能fork go源碼了。
看了net庫(kù)的實(shí)現(xiàn),確實(shí)是封裝了很多復(fù)雜的瑣碎的跨平臺(tái)的細(xì)節(jié),對(duì)于使用者是很親切的,但是這世界上畢竟不是人人都在開發(fā)通常的應(yīng)用,其實(shí)各種需求還是很多的,作為一個(gè)語(yǔ)言/庫(kù),確實(shí)不應(yīng)該限制用戶
好在修改已經(jīng)提上日程了:
https://groups.google.com/forum/#!msg/golang-dev/HAEaU5TakTU/ZfMLVLqEBAAJ
不過(guò)至少得等到go 1.11才行,在這之前只能選擇fork了,可參考:
https://go-review.googlesource.com/c/go/+/72810

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容