📄 transmission.cpp
字号:
// Transmission.cpp : implementation file
//
#include "stdafx.h"
#include "UServer.h"
#include "USocket.h"
#include "UServerDlg.h"
#include "Transmission.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CTransmission
CTransmission::CTransmission()
{
}
CTransmission::CTransmission(CUServerDlg *pDlg)
{
m_pDlg=pDlg;
}
CTransmission::~CTransmission()
{
}
/////////////////////////////////////////////////////////////////////////////
// CTransmission message handlers
BOOL CTransmission::StartTransmission(UINT nPort)
{
m_nPort=nPort;
m_pUSocket=new CUSocket(this);
if(m_pUSocket&&m_pUSocket->Create(m_nPort,SOCK_DGRAM,NULL))
{
return true;
}
else
{
return false;
}
}
BOOL CTransmission::Broadcast(const void* lpBuf, int nBufLen)
{
if(m_pUSocket)
{
if(!lpBuf||!nBufLen)return false;
int isend=m_pUSocket->Broadcast(lpBuf,nBufLen,m_nPort);
if(isend==SOCKET_ERROR)
{
DWORD error=GetLastError();
return false;
}
return true;
}
else
{
AfxMessageBox("Please start: StartTransmission() first!!");
return false;
}
}
BOOL CTransmission::Multicast(const void* lpBuf, int nBufLen,
LPCTSTR lpszHostAddress)
{
if(m_pUSocket)
{
if(!lpBuf||!nBufLen)return false;
int isend=m_pUSocket->Multicast(lpBuf,nBufLen,m_nPort,lpszHostAddress);
if(isend==SOCKET_ERROR)
{
DWORD error=GetLastError();
return false;
}
return true;
}
else
{
AfxMessageBox("Please start: StartTransmission() first!!");
return false;
}
}
BOOL CTransmission::PtoP(const void* lpBuf, int nBufLen,
LPCTSTR lpszHostAddress)
{
if(m_pUSocket)
{
if(!lpBuf||!nBufLen)return false;
int isend=m_pUSocket->PtoP(lpBuf,nBufLen,m_nPort,lpszHostAddress);
if(isend==SOCKET_ERROR)
{
DWORD error=GetLastError();
return false;
}
return true;
}
else
{
AfxMessageBox("Please start: StartTransmission() first!!");
return false;
}
}
BOOL CTransmission::JoinGroupActive(LPCTSTR lpszHostAddress)
{
return m_pUSocket->JoinGroup(lpszHostAddress);
}
BOOL CTransmission::ExitGroupActive(LPCTSTR lpszHostAddress)
{
return m_pUSocket->DropGroup(lpszHostAddress);
}
CString CTransmission::GetHostName()
{
char str[128];
if(gethostname(str,128)==0)
{
return CString(str);
}
return CString("");
}
CString CTransmission::GetHostIP()
{
CString str;
struct hostent *phost;
int occurred=0;
phost=gethostbyname(GetHostName());
for(int i=0;i<4;i++)
{
CString addr;
if(i>0)str+=".";
addr.Format("%u",((unsigned char *)phost->h_addr_list[occurred])[i]);
str+=addr;
}
return str;
}
void CTransmission::ProcessReceiveMsg()
{
char Buf[1500]={0};
CString rSocketAddress,str0,str;
str0.Format("%38c%s\r\n\r\n",' ',"[欢迎使用我爱我Q 1.0版]");
UINT rSocketPort;
int ircv=m_pUSocket->ReceiveFrom(Buf, 1500, rSocketAddress, rSocketPort);
str.Format("%s\r\n\r\n",Buf);
//Dataprocessing.....example:
m_pDlg->UpdateData();
char uCmd[4];
memcpy(uCmd,Buf,4);
uCmd[4]='\0';
// AfxMessageBox(uCmd);
CString szExit("EXIT"),szCome("COME");
if(!szExit.Compare(uCmd))
{
m_pDlg->m_listGroupMember.DeleteString(m_pDlg->m_listGroupMember.FindString(-1,GetHostIP()));
str.Format("%s%s\r\n\r\n",rSocketAddress,"离线了!");
}
if(!szCome.Compare(uCmd))
{
str.Format("%s%s\r\n\r\n",rSocketAddress,"上线了!");
}
m_pDlg->FontSet(m_pDlg->m_pEdit,"宋体",12);
m_pDlg->m_strReceiveMsg.Insert(str0.GetLength(),str);
// m_pDlg->UpdateData(false);
m_pDlg->SetReceiveText(m_pDlg->m_strReceiveMsg);
if(m_pDlg->m_bMsgNotice)
{
m_pDlg->PostMessage(WM_US_MSGARRIVE,0,0);
}
if(!(m_pDlg->m_listGroupMember.FindString(-1,rSocketAddress)+1))
{
m_pDlg->m_listGroupMember.AddString(rSocketAddress);
m_pDlg->m_listGroupMember.SetCurSel(m_pDlg->m_listGroupMember.GetCount()-1);
}
}
CString CTransmission::GetSystemTime()
{
CString sTime;
SYSTEMTIME systime;
::GetLocalTime(&systime);
sTime.Format("%d:%d:%d",systime.wHour,systime.wMinute,systime.wSecond);
return sTime;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -