1
0
mirror of https://github.com/zhaopeiym/IoTClient synced 2025-10-26 22:15:44 +08:00
IoTClient/IoTServer/Servers/ServerSocketBase.cs
BennyZhao ec84f0f7f7 update IoTClient Tool ModbusRtu按住ctrl连接,可以自动组合参数扫描。
update IoTClient Tool 读、写按住ctrl可以显示报文
2019-11-15 16:09:36 +08:00

45 lines
1.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Net.Sockets;
using System.Text;
namespace IoTServer.Servers
{
/// <summary>
/// ServerSocket基类
/// </summary>
public class ServerSocketBase
{
/// <summary>
/// 分批缓冲区大小
/// </summary>
protected const int BufferSize = 4096;
/// <summary>
/// 读取
/// </summary>
/// <param name="socket">socket</param>
/// <param name="receiveCount">读取长度</param>
/// <returns></returns>
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;
}
}
}