gethostbyaddr的第一个参数是字符串形式的ip地址
(char*)&addr.sin_addr.S_un.S_addr这么写是不行的
用inet_ntoa
(char*)&addr.sin_addr.S_un.S_addr这么写是不行的
用inet_ntoa
解决方案 »
- 用80 Mbps的码率发UDP组播时,UDP包长为1400,为什么实际输出的码率只有45Mbps?
- OpenGL没有显示结果问题
- 求SOCKET高手!如何在发送HTTP请求时修改IP首部?万谢!
- 平面离散点集的delaunay三角化
- 我有msdn的帐号,贱卖
- 对ListCtrl进行EditLabel,为什么改了内容后自动恢复
- 深入浅出之后呢?
- 请问怎么做才能将两个listbox控件中的内容互相拖拽呀???
- 关于C RUNTIME LIBRARY 的简单问题
- 头于复数运算的问题,急!
- 关于CoCreateInstanceEx()函数创建COM+实例时的问题!
- 100分相送,当某一文件夹下增加一个文件时,如何获得这个消息!!?
struct sockaddr_in name;
int len=sizeof(name);
getpeername(*m_pCommSocket[iLoop],(sockaddr *)&name,&len);
CString strIP=inet_ntoa(name.sin_addr);//IP
int port=htons((name.sin_port));//端口
我是说用API来写的,
我是说怎么在FD_ACCEPT里面得到的sockaddr_in返回IP
我事先不知道对方的name
{
case FD_ACCEPT:
{
struct sockaddr_in addr;
int len;
SOCKET s=accept(this->m_socket,(structsockaddr*)&addr,&len);
char *a=inet_ntoa(addr.sin_addr);
HOSTENT *host=gethostbyaddr(a, sizeof(a),
AF_INET);
MessageBox( host->h_name);
}
break;
不一定行
试试。应该行的。
len = sizeof(sockaddr_in);
我刚才也遇到了类似的问题!
{
case FD_ACCEPT:
{
struct sockaddr_in addr;
int len;
addr.sin_family = AF_INET ;
len = sizeof( sockaddr ) ;
SOCKET s=accept(this->m_socket,(structsockaddr*)&addr,&len);
MessageBox( inet_intoa( addr.sin_addr ) ) ;
}
break;