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; } } }