项目记录02--客unity,服erlang--框架net

重大:
遇到问题:服务端接收完信息客户端打印:接收到协议返回 长度为: 0,接受Socket数据num=0:DisConnect(),开始不明白为什么会这样,难道服务端接收完数据会自动发送一个消息过来吗?
erlang服务端async_recv 异步接收完所有数据会自动使用Shutdown方法关闭socket连接并且所有可用数据均已收到,客户端就是则 EndReceive 方法将立即完成并返回零字节。办法:就是服务端完成接收就开始下次异步监听接收。


%% 看清楚自己写的协议文档,不能所以为而为之,会坑死,一切以文档为准。比如:文档写的写入字符串前面写入字符串的Len,而int不需要写入长度(我自以为int耶写入长度erlang解析不够字节)


GetString can only be called from the main thread.
Constructors and field initializers will be executed from the loading thread when loading a scene.


客户端:
1.字符限制12,密码10。
2.防止一台手机多次注册账号使用手机唯一标示SystemInfo.deviceUniqueIdentifier 设备唯一标识符,一般情况不存在。原本计划绑定手机,但是如果换手机就不能玩,貌似不好。
3.流程:开机检查是否存在账号Playerfrefs,存在就显示快速登录按钮和输入按钮,不存在显示登录注册界面-->输入Name,密码。不存在就直接显示输入界面。
4.对名字,密码进行合法检查在注册的时候。可以再服务端做检查也可以再客户端做检查,为简单起见暂时只做客户端检查。

服务端:
1.写个协议类专门读写协议。以后对协议扩展就在这里,不和逻辑冲突。
2.协议类规范里面:int要注意大小端问题,string或者MD5,bin等不需要。
3.生成MD5的长度是32个字节。
4.Erlang中常用的类型转换http://blog.sina.com.cn/s/blog_53a5047b01018yqv.html
5.卡在MD5验证一段时间,客户端如果组装服务端就如何组装,使用 比特位组装穿过来的数据+MD5Key:比如需要用到head数据和body数据再加key
MD5Test = <<HeadData:?HEADER_LENGTH/binary-unit:8,BodyData:Len/binary-unit:8>>,
    MD5Test2 = binary_to_list(MD5Test)++?MD5,

    Hex = util:md5(MD5Test2)


进度:
1.完成基本协议调试。

2.服务端完成MD5验证,服务端已经完全解析客户端数据和验证。

3.客户端登陆界面和逻辑完成。


下步:

1.服务端打包数据发送给客户端调试解包。

2.可能写一个服务端自动生成协议read,write工具和客户端一样自动化,协议应该独立出来不和程序逻辑混合,就类似个接口。

3.服务端连接MySql.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值