【Unity】關於UDP 客戶端不能先給服務器發消息的問題

剛開始遇到這個問題時有點懵,UDP爲何還有分啓動順序?看一下我遇到的錯誤:spa

  1. 先啓動serevr,再啓動client,雙方無論誰先發消息,正常
  2. 先啓動server,再啓動client,以後關閉client,不關閉server,從新再啓動client,client先發消息異常,
  3. 先啓動client,再啓動server,client先發消息,一樣報上面的錯誤;

仔細檢查了代碼以後,發現ClientEnd的IP端口都是0,哦!我原來在和假地址交流。server

接着就查找其爲何是0,發現server創建好時候的問候(發消息創建通信),client還在睡覺(尚未啓動) 而後就找度娘搜索答案,發現改Hosts或者IP都試了好像沒什麼用處,SO就想辦法怎麼可以讓client起牀(啓動)以前,server一直叫它呢(嘗試創建通信)?因爲才接觸UDP,我這裏想到的是一個笨方法,大牛能夠略過,熱心的話能夠教一下萌新更高效的辦法,十分感謝。blog

本人解決辦法:cli

首先要明白只是Client向Server發消息會出現這些問題,Server向Client發送消息徹底沒問題。搜索

UDP不鏈接單發消息是不會有問題的。重載server的send方法,發送特殊標記(項目中必定用不到的字符)到client,判斷client是否接收了,若是接受返回標記到server,改變發送狀態。斷線亦是如此。方法

Server:im

檢測寫在Receive();d3

 

Client:項目

 

相關文章
相關標籤/搜索