mirror of
https://github.com/storytold/LiveScan3D.git
synced 2026-10-09 00:09:58 +00:00
70 lines
1.9 KiB
C#
70 lines
1.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
using System.Net.Sockets;
|
|
using System.Runtime.Serialization.Formatters.Binary;
|
|
|
|
namespace KinectServer
|
|
{
|
|
public class TransferSocket
|
|
{
|
|
TcpClient oSocket;
|
|
|
|
public TransferSocket(TcpClient clientSocket)
|
|
{
|
|
oSocket = clientSocket;
|
|
}
|
|
|
|
public byte[] Receive(int nBytes)
|
|
{
|
|
byte[] buffer;
|
|
if (oSocket.Available != 0)
|
|
{
|
|
buffer = new byte[Math.Min(nBytes, oSocket.Available)];
|
|
oSocket.GetStream().Read(buffer, 0, nBytes);
|
|
}
|
|
else
|
|
buffer = new byte[0];
|
|
|
|
return buffer;
|
|
}
|
|
|
|
public bool SocketConnected()
|
|
{
|
|
return oSocket.Connected;
|
|
}
|
|
|
|
public void WriteInt(int val)
|
|
{
|
|
oSocket.GetStream().Write(BitConverter.GetBytes(val), 0, 4);
|
|
}
|
|
|
|
public void WriteFloat(float val)
|
|
{
|
|
oSocket.GetStream().Write(BitConverter.GetBytes(val), 0, 4);
|
|
}
|
|
|
|
public void SendFrame(List<float> vertices, List<byte> colors)
|
|
{
|
|
short[] sVertices = Array.ConvertAll(vertices.ToArray(), x => (short)(x * 1000));
|
|
|
|
|
|
int nVerticesToSend = vertices.Count / 3;
|
|
byte[] buffer = new byte[sizeof(short) * 3 * nVerticesToSend];
|
|
Buffer.BlockCopy(sVertices, 0, buffer, 0, sizeof(short) * 3 * nVerticesToSend);
|
|
try
|
|
{
|
|
WriteInt(nVerticesToSend);
|
|
oSocket.GetStream().Write(buffer, 0, buffer.Length);
|
|
oSocket.GetStream().Write(colors.ToArray(), 0, sizeof(byte) * 3 * nVerticesToSend);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
}
|
|
}
|
|
}
|
|
}
|