broadcast.cpp
来自「本系统所完成功能如下:  即时消息:用户之间发送即时消息。 」· C++ 代码 · 共 109 行
CPP
109 行
// Broadcast.cpp : implementation file
//
#include "stdafx.h"
#include "IMS.h"
#include "Broadcast.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// Broadcast dialog
Broadcast::Broadcast(CWnd* pParent /*=NULL*/)
: CDialog(Broadcast::IDD, pParent)
{
//{{AFX_DATA_INIT(Broadcast)
m_msg = _T("");
//}}AFX_DATA_INIT
}
void Broadcast::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(Broadcast)
DDX_Text(pDX, IDC_EDIT1, m_msg);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(Broadcast, CDialog)
//{{AFX_MSG_MAP(Broadcast)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// Broadcast message handlers
void Broadcast::OnOK()
{
// TODO: Add extra validation here
UpdateData();
SOCKADDR_IN addrTo;
addrTo.sin_family=AF_INET;
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
//_CommandPtr pCmd(__uuidof(Command));
pConn->ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=TL;Initial Catalog=IM;Data Source=TLFZN";
pConn->Open("","","",adConnectUnspecified);
_variant_t vstr;
CString str,s="";
BOOL Isonline=FALSE;
int digital,num=0,length;
pRst=pConn->Execute("select * from UserTbl",NULL,adCmdText);
for(int i=1;!pRst->rsEOF;i++)
{
//查询所有在线用户
vstr= pRst->GetCollect("Online");
Isonline = vstr.iVal;
if(Isonline)
{
vstr= pRst->GetCollect("LoginIPPort");
str= vstr.bstrVal;//读ipport
length=str.GetLength();
for(i=length-1;i>=0;i--)
{
s=str.GetAt(i)+s;
if(str.GetAt(i)==':')
{
str.SetAt(i,'\0');
break;
}
}
for(int j=1;j<length-i;j++)
{
digital=s.GetAt(j)-48;
num=num*10+digital;
}
addrTo.sin_port=htons(num);//port
addrTo.sin_addr.s_addr=inet_addr(str);//ip
//UDP d类服务 发送广播
m_msg="d"+m_msg;
sendto(m_UDPsocket,m_msg,m_msg.GetLength()+1,0,(SOCKADDR*)&addrTo,sizeof(SOCKADDR));
}
pRst->MoveNext();
}
pRst->Close();
pConn->Close();
//pCmd.Release();
pRst.Release();
pConn.Release();
CoUninitialize();
CDialog::OnOK();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?