using System;
using System.Collections.Generic;
using System.Net.Sockets;
using System.Text;
namespace IoTServer.Servers
{
///
/// ServerSocket基类
///
public class ServerSocketBase
{
///
/// 分批缓冲区大小
///
protected const int BufferSize = 4096;
///
/// 读取
///
/// socket
/// 读取长度
///
protected byte[] SocketRead(Socket socket, int receiveCount)
{
byte[] receiveBytes = new byte[receiveCount];
int receiveFinish = 0;
while (receiveFinish < receiveCount)
{
// 分批读取
int receiveLength = (receiveCount - receiveFinish) >= BufferSize ? BufferSize : (receiveCount - receiveFinish);
var readLeng = socket.Receive(receiveBytes, receiveFinish, receiveLength, SocketFlags.None);
if (readLeng == 0)
{
if (socket.Connected) socket.Shutdown(SocketShutdown.Both);
socket.Close();
throw new Exception("连接已断开");
}
receiveFinish += readLeng;
}
return receiveBytes;
}
}
}