android kotlin socket 阻塞

才發(fā)現(xiàn)涡尘,socket read 方法忍弛,包括readline ,都是阻塞方式考抄,如果服務(wù)器不斷開輸出流细疚,客戶端是讀取不到 結(jié)束符的(換行/-1)。
研究了好久川梅,才知道怎么搞疯兼。直接上CODE。

private suspend fun getMsg(): String {
        if (readStream == null) {
            return ""
        }
        return withTimeoutOrNull(1500) {
            val sb = StringBuffer()
            while (isActive) {
                while (readStream?.ready() != true) {
                    delay(10)
                }
                val char = CharArray(1024)
                var readLength = 0
                while (readStream?.ready() == true) {
                    readLength = readStream!!.read(char)
                    sb.append(char.copyOf(readLength))
                }
                break
            }
            sb.toString()
        } ?: ""
    }

很簡單對不對贫途,就是主要依靠 ready來退出讀循環(huán)镇防。

2024年12月19日13:06:02

Socket(ipStr,port)

這樣寫是不對的潮饱,如果地址有問題来氧,是會阻塞的,用什么協(xié)程 timeout 也不好使香拉。
要使用

  private fun doRealConnect() {
        sc = Socket().apply {
            connect(InetSocketAddress(ipStr, iport), 1500)
        }

        sc?.let {
            writerStream = OutputStreamWriter(it.getOutputStream(), "utf-8")
            readStream = InputStreamReader(it.getInputStream(), "utf-8")
            it.soTimeout = 10000
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末啦扬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子凫碌,更是在濱河造成了極大的恐慌扑毡,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盛险,死亡現(xiàn)場離奇詭異瞄摊,居然都是意外死亡,警方通過查閱死者的電腦和手機苦掘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門换帜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鹤啡,你說我怎么就攤上這事惯驼。” “怎么了递瑰?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵祟牲,是天一觀的道長。 經(jīng)常有香客問我抖部,道長说贝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任慎颗,我火速辦了婚禮乡恕,結(jié)果婚禮上换淆,老公的妹妹穿的比我還像新娘。我一直安慰自己几颜,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布讯屈。 她就那樣靜靜地躺著蛋哭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涮母。 梳的紋絲不亂的頭發(fā)上谆趾,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天,我揣著相機與錄音叛本,去河邊找鬼沪蓬。 笑死,一個胖子當(dāng)著我的面吹牛来候,可吹牛的內(nèi)容都是我干的跷叉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼营搅,長吁一口氣:“原來是場噩夢啊……” “哼云挟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起转质,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤园欣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后休蟹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沸枯,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年赂弓,在試婚紗的時候發(fā)現(xiàn)自己被綠了绑榴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡盈魁,死狀恐怖彭沼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情备埃,我是刑警寧澤姓惑,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站按脚,受9級特大地震影響于毙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辅搬,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一唯沮、第九天 我趴在偏房一處隱蔽的房頂上張望脖旱。 院中可真熱鬧,春花似錦介蛉、人聲如沸萌庆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽践险。三九已至,卻和暖如春吹菱,著一層夾襖步出監(jiān)牢的瞬間巍虫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工鳍刷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留占遥,地道東北人。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓输瓜,卻偏偏與公主長得像瓦胎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子尤揣,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容