这部分代码的作用是什么 最好详细一些
std::string sRecev = recvbuf;
std::string::size_type nFind = -1;
nFind = sRecev.find("host_name:");
if ( 0== nFind )
{
ATLTRACE(L"host_name include \r\n");
continue;
}
//ATLTRACE(L"---------------------------%s\r\n", recvbuf);
char sendBuf[100] = {0};
//char szHostName[50] = {0};
//gethostname(szHostName, 50-1);
lstrcpyA(sendBuf, "host_name:");
//lstrcatA( sendBuf, inet_ntoa(from.sin_addr) );
lstrcatA( sendBuf, m_szHostName );
struct sockaddr_in remote;
remote.sin_family = AF_INET;
remote.sin_port = htons(MCASTPORT);
remote.sin_addr.s_addr = inet_addr( MCASTADDR );
if (sendto(m_soketMulticast,sendBuf,strlen(sendBuf),0,(struct sockaddr*)&remote,sizeof(remote))==SOCKET_ERROR)
{
int error = WSAGetLastError();
CString err;
err.Format(L"socket sendto error : %d", error);
::MessageBox(NULL, err, L"error", 0);
break;
}
}
}
}
[解决办法]
从一个字符串中,找出hostname和发送数据,然后发送
[解决办法]
std::string sRecev = recvbuf; //定义string sRecev, recvbuf赋值给sRecevstd::string::size_type nFind = -1; // 定义nFind, 初始化为FFFFFFFH.nFind = sRecev.find("host_name:"); //string类的查找函数: 从0开始查找字符host_name:在当前字符串的位置if ( 0== nFind ) //首字母找到host_name:,则表示include{ATLTRACE(L"host_name include \r\n");continue;}//ATLTRACE(L"---------------------------%s\r\n", recvbuf);char sendBuf[100] = {0}; //定义一个sendBuf[100]的缓冲,初始化为全0//char szHostName[50] = {0};//gethostname(szHostName, 50-1);lstrcpyA(sendBuf, "host_name:"); //禁用API, 复制host_name:到sendBuf,可用strcpy_s代替//lstrcatA( sendBuf, inet_ntoa(from.sin_addr) );lstrcatA( sendBuf, m_szHostName ); //同上struct sockaddr_in remote; //定义结构体remote.sin_family = AF_INET; //表明socket处于Internet域remote.sin_port = htons(MCASTPORT); //htons将一个无符号短整型数值转换为网络字节序,即大端模式(big-endian) remote.sin_addr.s_addr = inet_addr( MCASTADDR ); //将一个点分十进制的IP转换成一个长整数型数INET_ADDR()。 if (sendto(m_soketMulticast,sendBuf,strlen(sendBuf),0,(struct sockaddr*)&remote,sizeof(remote))==SOCKET_ERROR)// 使用 m_soketMulticast,,将指定字节数的数据发送到指定的终结点。// 如果错误, 则打印错误{int error = WSAGetLastError();CString err;err.Format(L"socket sendto error : %d", error);::MessageBox(NULL, err, L"error", 0);break;}}}}