关于SendTo和ReceiveFrom

来源:百度知道 编辑:UC知道 时间:2024/07/06 16:12:38
m_pServer = new CSocketServer(this); //建立一个新套接字;
m_pServer->Create(17777,SOCK_DGRAM); //服务端口,传输方式;

发送方:
void CTest1Dlg::OnSendButton()
{
// TODO: Add your control notification handler code here
UpdateData(); //初试化控件中的值,把控件中的值赋给绑定的变量;包括IP,端口和输入框;
BYTE ip1,ip2,ip3,ip4; //定义四个一个字节长的整型变量;
m_ctrIp.GetAddress(ip1,ip2,ip3,ip4);//从IP控件中获取IP值;
CString sip;
sip.Format("%d.%d.%d.%d", ip1,ip2,ip3,ip4);//点分十进制的IP值转化为字符型;
int n = m_pServer->SendTo(m_send.GetBuffer(0), m_send.GetLength(), m_nPort, sip);
if (n == SOCKET_ERROR)
{
MessageBox("send fail!!!");
}
m_recv += m_send;
m_recv += "\r\n";
m_send.Empty();
UpdateData(false);//将更新的数据重设的控件中
}

接受方:
void CSocketServer::OnReceive(int nErrorCode)
{
char pBuf[1000] = {0};
int len = 1000;
CString sIp = "";
unsigned int nPort;

ReceiveFrom 是从IP:端口 获取数据,pBuf用于存放数据,是局部变量,缓冲区的地址不可见,在ReceiveFrom内部处理。

实际上是ReceiveFrom 把网络发送过来的数据放到pBuf中。