关于c#的socket分包和组包的问题
最近在做TCP和UDP协议的通信DLL;大家分包和组包有没有什么好的建议;因为有时候比如要发送好几M的东东,如果不进行分包的话;当异步接收的时候Udpsocket.Beg...
最近在做TCP和UDP协议的通信DLL;大家分包和组包有没有什么好的建议;因为有时候比如要发送好几M的东东,如果不进行分包的话;当异步接收的时候Udpsocket.BeginReceiveFrom(
state.Buffer, 0, state.Buffer.Length,
SocketFlags.None,
ref state.RemoteEP,
EndReceiveFromCallback,
Udpsocket)这个state.Buffer也要设置成几M,太不可思议了;那只能分包,分包我是这样想的;把一个大包分成N个小包,然后一个一个发,发一个对方发一条确认信息过来;再发下一个包 还有一个方法是;连着一个一样发下去,让对方去分析;分析出来哪几个小包没有收到,然后再叫这端把这几个小包发过去 大家都是怎么做的 展开
state.Buffer, 0, state.Buffer.Length,
SocketFlags.None,
ref state.RemoteEP,
EndReceiveFromCallback,
Udpsocket)这个state.Buffer也要设置成几M,太不可思议了;那只能分包,分包我是这样想的;把一个大包分成N个小包,然后一个一个发,发一个对方发一条确认信息过来;再发下一个包 还有一个方法是;连着一个一样发下去,让对方去分析;分析出来哪几个小包没有收到,然后再叫这端把这几个小包发过去 大家都是怎么做的 展开
1个回答
展开全部
怎么分包那是tcp本身的问题,不需要你去考虑,你只需要考虑tcp的粘包就行了。
追问
tcp会粘包吗?我没有碰到过 粘包是怎么样的 应该怎么处理?还有就是handler.BeginReceive(stateOne.Buffer, 0, Date_Max, 0, new AsyncCallback(ReadCallback), stateOne);stateOne.Buffer这个会随着缓冲区数据的大小而自动增加吗
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询