프로그래밍
C# TCP/IP 통신 서버/클라이언트 간 메세지 송신 부
준이바라기얍
2021. 8. 9. 15:44
반응형
서버 클라이언트간 메세지 송신 구현 부입니다.
메세지형태가 클래스를 보내는 식으로 되어있습니다.
참고하시어 사용 바랍니다.
/// <summary>
/// NType Send Massage
/// </summary>
/// <param name="NMSG">NType Class </param>
public void SendMSG(clsMsg_NType NMSG)
{
try
{
if (NMSG.Port == 0)
NMSG.Port = ServerPort;
string KEY = NMSG.CLIENT_IP + ":" + NMSG.Port;
if (clients[KEY] == null) return;
if (clients.ContainsKey(KEY))
clients[KEY].NQueue.Enqueue(NMSG);
}
catch (Exception ex)
{
OnSystemMsg(clsConfigManager.MSGType.ToString() + " MSG SEND ERROR " + ex.ToString());
clsMSGLOG.SetLOG(MSGLOGTYPE.SYSTEM, clsConfigManager.MSGType.ToString() + " MSG SEND ERROR " + ex.ToString());
}
}
/// <summary>
/// PType Send Massage
/// </summary>
/// <param name="NMSG">NType Class </param>
public void SendMSG(clsMsg_PType NMSG)
{
try
{
if (NMSG.CLIENT_IP == string.Empty)
NMSG.CLIENT_IP = clients.FirstOrDefault().Key.Split(new char[] { ':' })[0];
if (NMSG.Port == 0)
NMSG.Port = int.Parse(clients.FirstOrDefault().Key.Split(new char[] { ':' })[1]);
string KEY = NMSG.CLIENT_IP + ":" + NMSG.Port;
if (clients[KEY] == null) return;
if (NMSG.MsgID == 0)
NMSG.MsgID = _SendSystemByte++;
if (clients.ContainsKey(KEY))
clients[KEY].PQueue.Enqueue(NMSG);
}
catch (Exception ex)
{
OnSystemMsg(clsConfigManager.MSGType.ToString() + " MSG SEND ERROR " + ex.ToString());
clsMSGLOG.SetLOG(MSGLOGTYPE.SYSTEM, clsConfigManager.MSGType.ToString() + " MSG SEND ERROR " + ex.ToString());
}
}
public void ReplyMSG(clsMsg_PType NMSG)
{
try
{
//if (NMSG.CLIENT_IP == string.Empty)
// NMSG.CLIENT_IP = clients.FirstOrDefault().Key.Split(new char[] { ':' })[0];
//if (NMSG.Port == 0)
// NMSG.Port = int.Parse(clients.FirstOrDefault().Key.Split(new char[] { ':' })[1]);
string KEY = NMSG.CLIENT_IP + ":" + NMSG.Port;
if (clients[KEY] == null) return;
//if (NMSG.MsgID == 0)
// NMSG.MsgID = _SendSystemByte++;
if (clients.ContainsKey(KEY))
clients[KEY].PQueue.Enqueue(NMSG);
}
catch (Exception ex)
{
OnSystemMsg(clsConfigManager.MSGType.ToString() + " MSG SEND ERROR " + ex.ToString());
clsMSGLOG.SetLOG(MSGLOGTYPE.SYSTEM, clsConfigManager.MSGType.ToString() + " MSG SEND ERROR " + ex.ToString());
}
}
반응형