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

来源:互联网 发布:淘宝助理导入不了csv 编辑:程序博客网 时间:2024/05/22 17:26
重大:
遇到问题:服务端接收完信息客户端打印:接收到协议返回 长度为: 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