csocket问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 09:47:35
我想用一个csocket监听本机的一个端口,有数据就接收(UDP),应该如何创建这个csocket,步骤有哪些?可否给个例程,望大侠帮忙,谢谢!
可是当没有数据接收的时候,程序老是停在receivefrom这里,如果结束接收数据线程的话,会造成消息混乱。

MFC里用CSocket异步通讯需要派生一个类,然后重载几个虚函数

至于是 UDP 还是 TCP 主要是在初始化那里区分。

UDP:
ptSocket = new CSSocket(this);
if (!ptSocket->Create(m_eport,SOCK_DGRAM))
{
MessageBox("网络初始化失败!");
return;
}

不需要调用 Listen 而 TCP 则是

pSerSocket = new CServerSocket(this);
if (pSerSocket->Create(800))
{
if (pSerSocket->Listen())
{
return TRUE;
}
}

UDP不存在连接(UDP机制问题)所以不用重载 OnAccept 这个虚函数,另外接受数据时候使用函数 ReceiveFrom 而TCP则是 Receive

UDP 接收数据
pSocket->ReceiveFrom(buffer,500,roip,roport);

TCP方式接收数据

Receive(chr,255);

相同的都需要重载OnReceive来响应接收数据。

当然同步通讯可以直接阻塞。

需要把网卡设置为混杂模式!
建议用wincap+winsocket实现.

www.vckbase.com 网络部分有详细的介绍