windows socket编程问题:怎么知道客户端连过来的IP地址和端口? 多谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 accept 中后两个参数.当 accept 成功返回时, 如果第二个参数不为空, 则系统会把客户IP 和端口复制给你 如果你有socket句柄,api函数getpeername可以取得对方的ip地址和端口。 多谢2位。accept的参数是可以返回信息,但是从SOCKADDR结构取出并转换成字符串不太会处理,希望您能多讲几句。最好能有个例子。getpeername得到的也是SOCKADDR结构,不过在您启发下,发现CAsyncSocket::GetPeerName可以返回字符串形式的IP和数字形式的port。总算解决问题。再次表示感谢。 to HelloWorld转换为字符串函数:inet_ntoa 端口:先用 ntohs 转换端口为主机字节顺序, 然后问题就归结于将一个无符号 16 位转换成字符串, 有很多函数可以做到, 你也可以写一个, 我常用的是 sprintf, wsprintf 端口数据取哪个字节啊?sockaddr.sa_data的前2个?结果不对啊? struct sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8];};sin_port 即是端口 那就是sockaddr.sa_data的前2个字节,转换后与用CAsyncSocket::GetPeerName取的端口不一样,奇怪?! 还是我的转换有错误,把sockaddr换成sockaddr_in 就没问题了。多谢你这么有耐心。 数据转换成字符串 我点击A Btn,想修改B btn的背景图,有API函数不,怎么弄呀 关于CGfxOutBarCtrl的疑问 如何生成树形菜单 <请教>SDK编程的一个疑惑。 采用RAW Socket的ping代码的疑问,在线等 多谢 如何在CDialog上使用CDialogBar 怎样改变Pictrue控件的背景颜色? 关于一些基础问题? 这个简单问题只给100分 如何把CEDIT里的字符串变为INT? VC与STL:VC编辑、编译环境对STL支持有问题?
当 accept 成功返回时, 如果第二个参数不为空, 则系统会把客户IP 和端口复制给你
accept的参数是可以返回信息,但是从SOCKADDR结构取出并转换成字符串不太会处理,希望您能多讲几句。最好能有个例子。getpeername得到的也是SOCKADDR结构,不过在您启发下,发现CAsyncSocket::GetPeerName可以返回字符串形式的IP和数字形式的port。总算解决问题。再次表示感谢。
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};sin_port 即是端口