电脑休眠-人生日历

protocol buffer
2023年4月5日发(作者:下载网页视频)

C#使用ProtocolBuffer(ProtoBuf)进行Unity中的

Socket通信

tions;

c;

;

usingSystem;

s;

publicclassNetServer{

//单例脚本

publicstaticreadonlyNetServerInstance=newNetServer();

//定义tcp服务器

privateSocketserver;

privateintmaxClient=10;

//定义端口

privateintport=35353;

//用户池

privateStackpools;

privateNetServer()

{

//初始化socket

server=newSocket(etwork,

,);

(newIPEndPoint(,port));

}

//开启服务器

publicvoidStart()

{

(maxClient);

("ServerOK!");

//实例化客户端的用户池

pools=newStack(maxClient);

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;

//用户池

privateStackpools;

privateNetServer()

{

//初始化socket

server=newSocket(etwork,

,);

(newIPEndPoint(,port));

}

//开启服务器

publicvoidStart()

{

(maxClient);

("ServerOK!");

//实例化客户端的用户池

pools=newStack(maxClient);

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