ip4 四个数字代表一个ip xx.xx.xx.xx
ip6 六个数字
ip4 四个数字代表一个ip xx.xx.xx.xx
ip6 六个数字
通过端口号确定软件
两者都是TCP为了优化性能导致的
粘包:就是数据小且多,就会整合成一个包,一起发送
分包:数据大,分成几个部分发送。
如果conn.open报错显示为:Authentication to host 'localhost' for user 'root' using method 'mysql_native_password' failed with message: Access denied for user 'root'@'localhost' (using password: YES)” 则是你数据库的密码打错了,老师的是root 可能你的是空~
设置Room类
创建一枚举RoomState房间状态
{
1、等待加入(WaitingJoin)
2、等待战斗(WaitingBattle)
3、战斗状态(Battle)
4、战斗结束(End)
}
在Server要对Room进行管理
创建一个RoomController
在Common中
{
1、房间列表(ListRoom)
2、创建房间(CreateRoom)
3、加入房间(Joinroom)
}
设置战绩表Result
添加RoomListPanel预制体
创建房间
创建空物体 RoomPlanel
个人信息BattleRes
{
用户名UserName
总场数TotalCount
胜利场数WinCount
}
房间列表 RoomList
提供播放背景声音方法
PlayBgSound(string soundName){
}
提供正常按键声音方法
PlayNormSound(string soundName){
}
在AudioManager统一管理音乐
定义路径
定义AudioSunde
在OnInit()里进行创建实例{
GameObject audioSourceGo = new GameObject("AudioSource");
bgAudioSource = audioSourceGo.AddComponent<AudioSource>();
normAudioSource = audioSourceGo.AddComponent<AudioSource>();
bgAudioSource.clip = LoadSound(Sound_Bg_moderate);
PlaySound(bgAudioSource, LoadSound(Sound_Bg_moderate), true);
}
定义一个LoadSound(audioName)方法返回AudioClip 进行加载音乐{
return Resources.Load<AudioClip>(Path_Prefix + audioName);
}
定义PlaySound(AudioSource audioSource, AudioClip audioClip, bool loop = true)方法{
audioSource.clip = audioClip;
audioSource.loop = loop;
audioSource.Play();
}
阴影效果是因为打开了两个StratPanel
将Common类库的目标框架修改为1.0,重新生成后在引用。这样才解决了引用问题
1,当client发送消息长度小于client定义字节数组长度并且大于server所定义的字节数组长度时,会发生server端终止client连接异常
2当client发送消息长度大于client数组,且小于server所定义字节数组长度时,server会丢失部分数据
除了手动添加引用mysql.Data.dll,还可以使用vs上的Nuget包管理搜索添加,但现在官方支持的.net版本已经和视频上的不符合了。
使用Nuget安装mysql.Data.dl:
https://dev.mysql.com/doc/connector-net/en/connector-net-installation-binary-nuget.htm
.net版本与 Connector版本的对应:
http://dev.mysql.com/doc/connector-net/en/connector-net-versions.html
127.0.0.1 代表本机
局域网IP地址可能 会变动
IP地址 主机在网络上的位置
局域网IP和外网IP
服务器的公网IP
端口对应着进程通信
游戏开发申请端口不要占用默认duankou
Database
datasource
port
user
pwd
using System.Net.Sockets;
using System.Net;
//创建socket
Socket clientSocket = new Socket(AddressFamliy.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
clientSocket.Connet(new IPEndpoint(IPAddress.Parse("xxx.xx.xx.xx"),88));
//接收
byte[] data = new byte[1024];
int count = clientSocket.Receive(data);
string msg = Encoding.UTF8.GetString(data, 0, count);
Console.Write(msg);
//发送
string s = Console.ReadLine();
clientSocket.Send( Encoding.UTF8.GetBytes(s));
clientSocket.Close();
TCP三次握手,TCP传输稳定,不会丢失,UDP速度快,不稳定,发出消息不管对方有没有接收到。
A发给B,B发响应给A,A收到响应说我收到响应了,开始发送数据。四次传送完了,四次挥手,A问B可以断开连接了吗,B回到收到,可以断开,A回答收到。
每台主机有局域网IP,公网IP
局域网IP由路由器分配,cmd,输入ipconfig,
外网IP百度搜索IP,可查本机外网ip。
路由器需要外网IP,阿里云里上买一个服务器。
知名端口号在0-1023之间,网络开发游戏这些自定义/动态分配的端口号在49152-65535之间。
注册服务端口1024-49152,动态端口1024-65535