using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace demo.ExternalDevices
{
class SktPacket
{
private static SktPacket m_instance = new SktPacket();
///
/// 单件类访问接口
///
///
public static SktPacket Instance
{
get { return m_instance; }
private set { m_instance = value; }
}
public static bool InitSocket()
{
return 0 == skt.skt_init() ? true : false;
}
public static bool SktConnect(int sktHandle)
{
return 0 == skt.skt_conn(sktHandle) ? true : false;
}
public static bool SktDisConnect(int sktHandle)
{
return 0 == skt.skt_disconn(sktHandle) ? true : false;
}
public static bool SktClose(int sktHandle)
{
return 0 == skt.skt_close(sktHandle) ? true : false;
}
public static bool CreateClient(string ip ,ushort port, ref int sktHandle)
{
sktHandle = skt.create_c(ip, port);
return (int)EMSocketStatus.SOCKET_CONNECTED == skt.skt_status(sktHandle) ? true : false;
}
public static bool CreateServer(string ip, ushort port, ref int sktHandle)
{
sktHandle = skt.create_s(ip, port);
return (int)EMSocketStatus.SOCKET_DISCONNECTED == sktHandle ? false : true;
}
public static bool SendMsg(int sktHandle, string msg)
{
if ((int)EMSocketStatus.SOCKET_CONNECTED != skt.skt_status(sktHandle))
{
return false;
}
int ret = skt.skt_send(sktHandle, msg, msg.Length);
return ret == msg.Length ? true : false;
}
public static bool SendMsg(int sktHandle, byte[] cmd)
{
if ((int)EMSocketStatus.SOCKET_CONNECTED != skt.skt_status(sktHandle))
{
return false;
}
string msg = Encoding.UTF8.GetString(cmd);
return msg.Length == skt.skt_send(sktHandle, msg, msg.Length) ? true : false;
}
public static bool RecvMsg(int sktHandle, ref string msg, uint timeout = 0xFFFFFFFF)
{
if ((int)EMSocketStatus.SOCKET_CONNECTED != skt.skt_status(sktHandle))
{
return false;
}
StringBuilder sb = new StringBuilder(256);
int ret = skt.skt_recv(sktHandle, sb, 256, timeout);
string recvMsg = sb.ToString();
return ret == recvMsg.Length ? true : false;
}
}
}