udp数据包做标记出了问题-----巨大的问题
///SERVER发送做了标记的数据
private void Send()
{
IPAddress ip = IPAddress.Parse("192.168.1.255");
int port = 11000;
UdpClient sender = new UdpClient();
IPEndPoint ipep = new IPEndPoint(ip, port);
try
{
string str=this.rtxtSendMsg.Text ;
byte[] bytes =Encoding.Unicode.GetBytes(str);
//总包的大小
int totalSize=bytes.Length;
//如果总包小于1024做个标记并发送
if(totalSize<1024)
{ //数据小于1024字节,进行标记,方便Client接收
byte[] b1=new byte[totalSize+1];
b1[0]=1;
Array.Copy(bytes,0,b1,2,totalSize);
sender.Send(b1,b1.Length);
}
else
{
MessageBox.Show ("sorry");
}
}
///CLIENT接收数据
private void Listen()
{
int port = 11000;
UdpClient listener = new UdpClient(port);
RemoteIpEndPoint=null;
while(true)
{
try
{
byte[] receiveBytes=listener.Receive(ref RemoteIpEndPoint);
//数据小于1024字节的,处理掉标记后进行输出
if(receiveBytes[0]==1)
{
//长度减1
byte[] b1=new byte[receiveBytes.Length-1];
//除去标记 装如字节数组b1
Array.Copy(receiveBytes,2,b1,0,receiveBytes.Length-1);
string returnData=Encoding.Unicode.GetString(b1,0,b1.Length);
this.rtxtHistory.Text=returnData;
}
else
{
MessageBox.Show("转换出错了");
}
}
catch (System.Exception pe)
{
Console.WriteLine(pe.ToString());
}
}
问题: 接收端没有效果,在做标记和出去标记上一定有错误,请朋友帮我修改一下代码。
谢谢