接收数据方法:
/**/ /// <summary>
/// 接收数据的方法
/// </summary>
/// <param name="socket"> Socket连接 </param>
/// <param name="size"> 要接收的数据长度 </param>
/// <returns> 返回收到的字节数组 </returns>
public static byte [] ReceiveData(Socket socket, int size)
{
int total = 0 ; // 收到的总的字节数
int dataleft = size; // 剩余的字节数
byte [] data = new byte [size]; // 接收数据的数组
int rece = 0 ; // 收到的字节数
// 循环接收数据
while (total < size)
{
rece = socket.Receive(data,total,dataleft,SocketFlags.None);
// 如果收到的字节数为0,那么说明连接断开,返回空的字节数组
if (rece == 0 )
{
break ;
}
total += rece; // 收到的字节数长度++
dataleft -= rece; // 剩余的字节数--
}
return data; // 返回
}
接收数据方法重载:
public static byte [] ReceiveData(Socket socket)
{
StringBuilder header = new StringBuilder();
string headertext = "" ;
while ( true )
{
byte [] data = new byte [ 1 ];
// 接收一个字节
int rece = socket.Receive(data, 1 ,SocketFlags.None);
// 转换为char
char c = ( char )data[ 0 ];
header.Append(c);
// 检查是否到了包头末尾,如果到了包头末尾,那么停止
// 读取
if (header.ToString().IndexOf( " \r\n\r\n " ) > 0 )
{
string content = " CONTENT-LENGTH: " ;
int start = header.ToString().ToUpper().IndexOf(content);
headertext = header.ToString().Substring(start + content.Length);
int end = headertext.IndexOf( " \r\n " );
headertext = headertext.Substring( 0 ,end); // 包体长度
break ;
}
}
//
byte [] ds = ReceiveData(socket,Convert.ToInt16(headertext));
return ds;
}
/**/ /// <summary>
/// 接收数据的方法
/// </summary>
/// <param name="socket"> Socket连接 </param>
/// <param name="size"> 要接收的数据长度 </param>
/// <returns> 返回收到的字节数组 </returns>
public static byte [] ReceiveData(Socket socket, int size)
{
int total = 0 ; // 收到的总的字节数
int dataleft = size; // 剩余的字节数
byte [] data = new byte [size]; // 接收数据的数组
int rece = 0 ; // 收到的字节数
// 循环接收数据
while (total < size)
{
rece = socket.Receive(data,total,dataleft,SocketFlags.None);
// 如果收到的字节数为0,那么说明连接断开,返回空的字节数组
if (rece == 0 )
{
break ;
}
total += rece; // 收到的字节数长度++
dataleft -= rece; // 剩余的字节数--
}
return data; // 返回
}
接收数据方法重载:
public static byte [] ReceiveData(Socket socket)
{
StringBuilder header = new StringBuilder();
string headertext = "" ;
while ( true )
{
byte [] data = new byte [ 1 ];
// 接收一个字节
int rece = socket.Receive(data, 1 ,SocketFlags.None);
// 转换为char
char c = ( char )data[ 0 ];
header.Append(c);
// 检查是否到了包头末尾,如果到了包头末尾,那么停止
// 读取
if (header.ToString().IndexOf( " \r\n\r\n " ) > 0 )
{
string content = " CONTENT-LENGTH: " ;
int start = header.ToString().ToUpper().IndexOf(content);
headertext = header.ToString().Substring(start + content.Length);
int end = headertext.IndexOf( " \r\n " );
headertext = headertext.Substring( 0 ,end); // 包体长度
break ;
}
}
//
byte [] ds = ReceiveData(socket,Convert.ToInt16(headertext));
return ds;
}