我使用udpclient进行udp传输.因为包比较大,所以在发送端把一个包分成几个小包,在接受端在重组回来.
应该怎么做呢??我的发送端分包代码如下,帮我看看有什么问题:
UdpClient up = new UdpClient(ip,port);
try
{
byte[] bcontent = System.Text.Encoding.GetEncoding("GB2312").GetBytes(content);
         int iPocket = 0; //包总的字节数
int temp = 0;    
if(bcontent.Length > 512)
{
iPocket = bcontent.Length / 512; //每个包512字节;
temp = bcontent.Length % 512 ; 如果包不是512的倍数,记下 剩余的数目.
if(temp != 0)
{
iPocket ++;
}
}
else //如果总的长度刚好等于或小于512
{
iPocket = 1;
         }        //整个包的序列号(6个字节)
        string strSequence = DateTime.Now.Hour.ToString().PadLeft(2,'0')                 +DateTime.Now.Minute.ToString().PadLeft(2,'0')+DateTime.Now.Second.ToString().PadLeft(2,'0');

        byte[] sequencenumber =  System.Text.Encoding.GetEncoding("GB2312").GetBytes(strSequence);         //总的子包的数目
        byte[] PocketCount = System.BitConverter.GetBytes(IPAddress.HostToNetworkOrder(iPocket));
//这个字段保存子包
        byte[] submitPocket = new byte[526];
         //子包的序列号
byte[] subSequence;
         //以下开始组包,并发送
for(int i = 1;i <= iPocket;i++)
{
   subSequence = System.BitConverter.GetBytes(IPAddress.HostToNetworkOrder(i));
   //包序列号6个字节
  Array.Copy(sequencenumber,0,submitPocket,0,sequencenumber.Length);
  //子包的数量4个字节
 Array.Copy(PocketCount,0,submitPocket,sequencenumber.Length,4);
//子包的序列号4个子节
Array.Copy(subSequence,0,submitPocket,sequencenumber.Length+4,4);
//子包内容
if(i == iPocket)
{
Array.Copy(bcontent,(i-1)*512,submitPocket,sequencenumber.Length+4+4,temp);
}
else
{
Array.Copy(bcontent,(i-1)*512,submitPocket,sequencenumber.Length+4+4,512);

         //发送包
up.Send(submitPocket,submitPocket.Length);
}
我发现在接收的时候,只能收到一个子包.这是怎么会事呢??
各位老大,你们是怎么组包分包的.给点代码好吗??