码迷,mamicode.com
首页 > 编程语言 > 详细

【Unity】关于UDP 客户端不能先给服务器发消息的问题

时间:2019-12-25 12:49:22      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:发送消息   关闭   不能   hosts   怎么   rev   服务器   com   send   

刚开始遇到这个问题时有点懵,UDP为什么还有分启动顺序?看一下我遇到的错误:

  1. 先启动serevr,再启动client,双方不管谁先发消息,正常
  2. 先启动server,再启动client,之后关闭client,不关闭server,重新再启动client,client先发消息异常,技术图片
  3. 先启动client,再启动server,client先发消息,同样报上面的错误;

仔细检查了代码之后,发现ClientEnd的IP端口都是0,哦!我原来在和假地址交流。技术图片

接着就查找其为什么是0,发现server建立好时候的问候(发消息建立通讯),client还在睡觉(还没有启动) 然后就找度娘搜索答案,发现改Hosts或者IP都试了好像没什么用处,SO就想办法怎么能够让client起床(启动)之前,server一直叫它呢(尝试建立通讯)?由于才接触UDP,我这里想到的是一个笨方法,大牛可以略过,热心的话可以教一下萌新更高效的办法,十分感谢。

本人解决办法:

首先要明白只是Client向Server发消息会出现这些问题,Server向Client发送消息完全没问题。

UDP不连接单发消息是不会有问题的。重载server的send方法,发送特殊标记(项目中一定用不到的字符)到client,判断client是否接收了,如果接受返回标记到server,改变发送状态。断线亦是如此。

Server:

技术图片

技术图片

检测写在Receive();

技术图片

 

Client:

技术图片

 

技术图片

【Unity】关于UDP 客户端不能先给服务器发消息的问题

标签:发送消息   关闭   不能   hosts   怎么   rev   服务器   com   send   

原文地址:https://www.cnblogs.com/Bingk/p/12095984.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!