怎样连续获得CSocket中的数据? 是否连续调用recieveFrom函数。我试过循环使用此函数,结果输出都一模一样。好象要清空UDP缓冲区吧。谁做过Socket应该知道的啊! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先建立连接,客户端做成一个exe,服务端做成一个exe然后客户端连续发消息,用csocket::send函数即可服务端接收消息,用csocket::receive 函数即可最好是客户端和服务端都使用重载csocket类的对象onreceive是接收函数响应消息,只要有东西传它就自动响应最好在网上下一个例子看以下把 多谢指教,onreceive对应什么事件呢? 多谢指教。Onreceive对应什么消息事件呢?例子在哪里? 客户端发东西,用send函数发消息的话,服务端就立即有反映比如CSocClient m_client;CSocServer m_server;当 m_client.send()执行时,服务端的 CSocSever::OnReceive函数就有响应你可以根据你要接收的数据结构进行接收void CSocConnect::OnReceive(int nErrorCode) { Receive(&m_UserMsg,sizeof(UserMsg)); CSocket::OnReceive(nErrorCode);} OnReceive当有信息来时会调用此函数,在这里调用Receive或ReceiveFrom最好。当然,要使这个函数被调用汉要做以下工作:1。在创建套接字时使用FD_READ,其实缺省是这样的。2。若用CAsyncSocket,此消息仅被发送一次,你在OnReceive结束时用重新申请此消息。AsyncSelect(FD_READ) 请问CSocClient是什么?我一般都用CSocket来定义socket变量。 谁有CSOCKET的例子,拿出来大家看看!我也在苦苦查找!! 我重载了自定义的CmySocket的OnReceive()但是不知如何把接收到的数据传到其他类中去,如Dialog或Doc. 请大家看看这两段代码。void CmySocket::OnReceive(int nErrorCode) { // TODO: Add your specialized code here and/or call the base class char szRecv[200]; int iRecv; iRecv=Receive(szRecv,200,0); m_pDlg->m_RecvData =szRecv; m_pDlg->m_iRecv =iRecv; m_pDlg->GetDlgItem(IDC_Recv)->SetWindowText(szRecv); m_pDlg->UpdateData(FALSE); MessageBox(NULL,szRecv,NULL,0); CSocket::OnReceive(nErrorCode);}void CSocketTestDlg::OnOK() { // TODO: Add extra validation here BYTE ip1,ip2,ip3,ip4; CString IP_Address,Port; CmySocket m_sockRecv; m_IPAddress.GetAddress(ip1,ip2,ip3,ip4); IP_Address.Format("%d.%d.%d.%d",ip1,ip2,ip3,ip4); //MessageBox(IP_Address,NULL,MB_OK); UpdateData(TRUE); Port.Format("%d",m_Port); m_sockRecv.m_pDlg =this; m_sockRecv.Create(m_Port,SOCK_DGRAM,IP_Address); m_sockRecv.Bind(m_Port,IP_Address); m_sockRecv.AsyncSelect(FD_READ); // CDialog::OnOK();}执行后OnReceve()总不被触发,这是为什么? 你在CSocketTestDlg::OnOK() 中定义CmySocket m_sockRecv,这个函数一调用,整个对话筐就退出,同时释放掉所有的局部变量,m_sockRecv也被放掉了,当然接收不到 to blueskyweave(枫枫) 为什么OnReceive不执行?我用的是CSocket的派生类。 在Socket端口读取内容后,如果设置为读完即清的状态,则不会重复读取 在ActiveX生成一个Toolbar 问个弱弱地问题--关于dhtml的 有关SNMP++的东西.希望高手指点下.. 如何在运行时让DatetimePicker1控件显示当前日期。 倾囊请教重发机制问题 List Control 问题 如何在一个程序中插入在其他程序中已经有的对话框资源??? 如何实现模拟鼠标点击TRAYICON的操作? 请问不用MFC类库,如何与一个数据库建立连接? 一个关于位图的问题! 怎样进行数据传递?微软的MFC实在太烦人了。定义了那么多乱七八糟的东西干什么呢?来者有分,可以再加分。 dummy是什么意思
然后客户端连续发消息,用csocket::send函数即可
服务端接收消息,用csocket::receive 函数即可
最好是客户端和服务端都使用重载csocket类的对象
onreceive是接收函数响应消息,只要有东西传它就自动响应
最好在网上下一个例子看以下把
onreceive对应什么事件呢?
Onreceive对应什么消息事件呢?
例子在哪里?
比如
CSocClient m_client;
CSocServer m_server;
当 m_client.send()执行时,服务端的 CSocSever::OnReceive函数就有响应
你可以根据你要接收的数据结构进行接收
void CSocConnect::OnReceive(int nErrorCode)
{
Receive(&m_UserMsg,sizeof(UserMsg));
CSocket::OnReceive(nErrorCode);
}
1。在创建套接字时使用FD_READ,其实缺省是这样的。
2。若用CAsyncSocket,此消息仅被发送一次,你在OnReceive结束时用重新申请此消息。AsyncSelect(FD_READ)
我一般都用CSocket来定义socket变量。
但是不知如何把接收到的数据传到其他类中去,如Dialog或Doc.
void CmySocket::OnReceive(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
char szRecv[200];
int iRecv;
iRecv=Receive(szRecv,200,0);
m_pDlg->m_RecvData =szRecv;
m_pDlg->m_iRecv =iRecv;
m_pDlg->GetDlgItem(IDC_Recv)->SetWindowText(szRecv);
m_pDlg->UpdateData(FALSE);
MessageBox(NULL,szRecv,NULL,0);
CSocket::OnReceive(nErrorCode);
}void CSocketTestDlg::OnOK()
{
// TODO: Add extra validation here
BYTE ip1,ip2,ip3,ip4;
CString IP_Address,Port;
CmySocket m_sockRecv; m_IPAddress.GetAddress(ip1,ip2,ip3,ip4);
IP_Address.Format("%d.%d.%d.%d",ip1,ip2,ip3,ip4); //MessageBox(IP_Address,NULL,MB_OK);
UpdateData(TRUE);
Port.Format("%d",m_Port); m_sockRecv.m_pDlg =this;
m_sockRecv.Create(m_Port,SOCK_DGRAM,IP_Address);
m_sockRecv.Bind(m_Port,IP_Address);
m_sockRecv.AsyncSelect(FD_READ);
// CDialog::OnOK();
}
执行后OnReceve()总不被触发,这是为什么?
我用的是CSocket的派生类。