电脑休眠-人生日历
2023年4月5日发(作者:下载网页视频)
C#使用ProtocolBuffer(ProtoBuf)进行Unity中的
Socket通信
tions;
c;
;
usingSystem;
s;
publicclassNetServer{
//单例脚本
publicstaticreadonlyNetServerInstance=newNetServer();
//定义tcp服务器
privateSocketserver;
privateintmaxClient=10;
//定义端口
privateintport=35353;
//用户池
privateStack
privateNetServer()
{
//初始化socket
server=newSocket(etwork,
,);
(newIPEndPoint(,port));
}
//开启服务器
publicvoidStart()
{
(maxClient);
("ServerOK!");
//实例化客户端的用户池
pools=newStack
for(inti=0;i
{
NetUserTokenusertoken=newNetUserToken();
(usertoken);
}
//可以异步接受客户端,BeginAccept函数的第一个参数是回调函
数,当有客户端连接的时候自动调用
ccept(AsyncAccept,null);
}
//回调函数,有客户端连接的时候会自动调用此方法
privatevoidAsyncAccept(IAsyncResultresult)
{
try{
//结束监听,同时获取到客户端
Socketclient=ept(result);
("有客户端连接");
//来了一个客户端
NetUserTokenuserToken=();
=client;
//客户端连接之后,可以接受客户端消息
BeginReceive(userToken);
//尾递归,再次监听是否还有其他客户端连入
ccept(AsyncAccept,null);
}catch(Exceptionex){
(ng());
}
}
//异步监听消息
privatevoidBeginReceive(NetUserTokenuserToken)
{
try{
//异步方法
eceive(,0,
,,
EndReceive,userToken);
}catch(Exceptionex){
(ng());
}
}
//监听到消息之后调用的函数
privatevoidEndReceive(IAsyncResultresult)
{
try{
//取出客户端
NetUserTokenuserToken=tateas
NetUserToken;
//获取消息的长度
intlen=eive(result);
if(len>0)
{
byte[]data=newbyte[len];
opy(,0,data,0,len);
//用户接受消息
e(data);
//尾递归,再次监听客户端消息
BeginReceive(userToken);
}
}catch(Exceptionex){
(ng());
}
}
}
tions;
c;
;
usingSystem;
s;
publicclassNetServer{
//单例脚本
publicstaticreadonlyNetServerInstance=newNetServer();
//定义tcp服务器
privateSocketserver;
privateintmaxClient=10;
//定义端口
privateintport=35353;
//用户池
privateStack
privateNetServer()
{
//初始化socket
server=newSocket(etwork,
,);
(newIPEndPoint(,port));
}
//开启服务器
publicvoidStart()
{
(maxClient);
("ServerOK!");
//实例化客户端的用户池
pools=newStack
for(inti=0;i
{
NetUserTokenusertoken=newNetUserToken();
(usertoken);
}
//可以异步接受客户端,BeginAccept函数的第一个参数是回调函
数,当有客户端连接的时候自动调用
ccept(AsyncAccept,null);
}
//回调函数,有客户端连接的时候会自动调用此方法
privatevoidAsyncAccept(IAsyncResultresult)
{
try{
//结束监听,同时获取到客户端
Socketclient=ept(result);
("有客户端连接");
//来了一个客户端
NetUserTokenuserToken=();
=client;
//客户端连接之后,可以接受客户端消息
BeginReceive(userToken);
//尾递归,再次监听是否还有其他客户端连入
ccept(AsyncAccept,null);
}catch(Exceptionex){
(ng());
}
}
//异步监听消息
privatevoidBeginReceive(NetUserTokenuserToken)
{
try{
//异步方法
eceive(,0,
,,
EndReceive,userToken);
}catch(Exceptionex){
(ng());
}
}
//监听到消息之后调用的函数
privatevoidEndReceive(IAsyncResultresult)
{
try{
//取出客户端
NetUserTokenuserToken=tateas
NetUserToken;
//获取消息的长度
intlen=eive(result);
if(len>0)
{
byte[]data=newbyte[len];
opy(,0,data,0,len);
//用户接受消息
e(data);
//尾递归,再次监听客户端消息
BeginReceive(userToken);
}
}catch(Exceptionex){
(ng());
}
}
}
更多推荐
protocol buffer
发布评论