当客户端连接到服务器时,怎样获取客户端IP地址和端口,又怎样获取本机IP获取本机IP,我这样写为什么不行?
解决方案 »
- 求救:VC设置断点调试运行就出错,但编译连接运行都没问题,是不是设置有问题啊?
- 求助win 7安装vc6.0后程序编译报错( error LNK1104)的问题
- Microsoft Visual C++ 6.0 运行库参考手册 100分求 光盘源码
- ftp客户端程序遇到的奇怪问题,服务器返回500.
- vc编译时的一个问题。。请高手指点。。
- 太欺负人! 顶者有分
- 關于CString的問題,在線等,謝謝
- 请问大家定时器的具体使用方法以及如何实现点某个按钮就可激活定时器事件?
- 在VC++ 中能否开发多层应用??怎样开发??
- 一段关于随机数的代码
- 使用NetBIOS函数,返回34h,“环境未被定义”,如何解决?
- 利用VC+ADO删除SQL数据库出错的问题,在线等
{
// TODO: Add your command handler code here
char name[255];
PHOSTENT hostinfo;
CString ip;
if(gethostname(name,sizeof(name)))
{
if((hostinfo=gethostbyname(name))!=NULL)
{
LPCSTR ip=inet_ntoa(*(struct in_addr *)*hostinfo->h_addr_list);
MessageBox(ip);
}
}
}
如果已经连结上了,可以用
GetPeerName()来得到对方IP
GetSockName()得到本地IP
BOOL GetSockName( CString& rSocketAddress, UINT& rSocketPort );Parameters
rSocketAddress
Reference to a CString object that receives a dotted number IP address.
rSocketPort
Reference to a UINT that stores a port.
让我参考一下?
char chHostName[256];
struct hostent *Host = NULL;
gethostname(chHostName, 256);
Host = gethostbyname(chHostName);
if (Host)
CopyMemory(&InternetAddr.sin_addr, Host->h_addr_list[0], Host->h_length);
客户端地址:
SOCKADDR_IN ClientAddr;
int addr_length = sizeof(Socket,(SOCKADDR*)&ClientAddr,&adr_length);
LPCTSTR lpIp = inet_ntoa(ClientAddr.sin_addr);//Client IP
UINT nPort = ClientAddr.sin_port; //
客户端地址:
SOCKADDR_IN ClientAddr;
int addr_length = sizeof(ClientAddr);
Socket accepteSocket = accept(Socket,(SOCKADDR*)&ClientAddr,&adr_length);
LPCTSTR lpIp = inet_ntoa(ClientAddr.sin_addr);//Client IP
UINT nPort = ClientAddr.sin_port; //
是什么意思,能解释一下吗?
取本机地址,我这样写不行,因为什么?
void CASockView::OnIp()
{
// TODO: Add your command handler code here
char name[255];
PHOSTENT hostinfo;
CString ip;
if(gethostname(name,sizeof(name)))
{
if((hostinfo=gethostbyname(name))!=NULL)
{
LPCSTR ip=inet_ntoa(*(struct in_addr *)*hostinfo->h_addr_list);
MessageBox(ip);
}
}
}