NetSupportReadBytesFromSocket 方法 (Socket, Int32) |
读取socket数据的基础方法,只适合用来接收指令头,或是同步数据
命名空间:
HslCommunication.Core
程序集:
HslCommunication (在 HslCommunication.dll 中) 版本:8.2.1.0 (8.2.1.0)
语法 public static byte[] ReadBytesFromSocket(
Socket socket,
int receive
)
Public Shared Function ReadBytesFromSocket (
socket As Socket,
receive As Integer
) As Byte()
public:
static array<unsigned char>^ ReadBytesFromSocket(
Socket^ socket,
int receive
)
static member ReadBytesFromSocket :
socket : Socket *
receive : int -> byte[]
参数
- socket
- 类型:System.Net.SocketsSocket
通信对象 - receive
- 类型:SystemInt32
接收的长度
返回值
类型:
Byte接收到的字节数据
异常 异常 | 条件 |
---|
ArgumentNullException | |
SocketException | |
ObjectDisposedException | |
SecurityException | |
示例
接收数据的举例,简单的接收20个字节长度的数据。
Socket socket = new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp );
socket.Connect( IPAddress.Parse( "192.168.0.7" ), 1000 );
byte[] receive = NetSupport.ReadBytesFromSocket( socket, 20 );
socket.Close( );
如何接收不定长度的数据呢?我们可以将一条数据拆分成2次接收,第一次是接收8个固定的字节,解析成长度,再接收真实的数据。
Socket socket = new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp );
socket.Connect( IPAddress.Parse( "192.168.0.7" ), 1000 );
byte[] head = NetSupport.ReadBytesFromSocket( socket, 4);
int length = BitConverter.ToInt32( head, 0 );
byte[] content = NetSupport.ReadBytesFromSocket( socket, length );
socket.Close( );
参见