MFC网络编程,想通过GetSockName函数获取某个客户端的IP地址,不知道参数怎么用?
我通过CPtrList存储多个客户端的套接字对象,现在将某个对象取出来,想读取它的IP地址,但是不知道GetSockName这个函数的参数怎么用。通过VC6.0的自动提示...
我通过CPtrList存储多个客户端的套接字对象,现在将某个对象取出来,想读取它的IP地址,但是不知道GetSockName这个函数的参数怎么用。
通过VC6.0的自动提示功能,显示的该函数的参数如下:
BOOL GetSockName(
SOCKADDR* lpSockAddr,
int* lpSockAddrLen
);
我对结构体和指针的了解一知半解,实在不知道这两个参数是什么,怎么用?最好能做一个实际的简单举例
怎么看不到回答啊??? 展开
通过VC6.0的自动提示功能,显示的该函数的参数如下:
BOOL GetSockName(
SOCKADDR* lpSockAddr,
int* lpSockAddrLen
);
我对结构体和指针的了解一知半解,实在不知道这两个参数是什么,怎么用?最好能做一个实际的简单举例
怎么看不到回答啊??? 展开
2个回答
展开全部
可以使用这个实现。
BOOL GetSockName(
CString& rSocketAddress,
UINT& rSocketPort
);
可以使用 inet_addr得到IP地址字符串对应的int。
另一个实现中的数据结构:
struct sockaddr {
ushort sa_family;
char sa_data[14];
};
实际上等同于如下架构,可以强制转换使用的。
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
其中sin_addr是一亩消渗个union
typedef struct in_addr {
union {
struct { UCHAR s_b1,s_b2,s_b3,s_b4; } S_un_b;
struct { USHORT s_w1,s_w2; } S_un_w;
ULONG S_addr;
} S_un;
} IN_ADDR, *PIN_ADDR, FAR *LPIN_ADDR;
我们一般用S_addr,这个就是IP地址,可以使用inet_ntoa得到对应字符串
我在原来的问题里也回答你了,记迅脊得采纳哦
ysdoc的回答不对的,因为GetSockName的值是输出,不是桥晌输入,所以不需要用recvfrom去获取。
BOOL GetSockName(
CString& rSocketAddress,
UINT& rSocketPort
);
可以使用 inet_addr得到IP地址字符串对应的int。
另一个实现中的数据结构:
struct sockaddr {
ushort sa_family;
char sa_data[14];
};
实际上等同于如下架构,可以强制转换使用的。
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
其中sin_addr是一亩消渗个union
typedef struct in_addr {
union {
struct { UCHAR s_b1,s_b2,s_b3,s_b4; } S_un_b;
struct { USHORT s_w1,s_w2; } S_un_w;
ULONG S_addr;
} S_un;
} IN_ADDR, *PIN_ADDR, FAR *LPIN_ADDR;
我们一般用S_addr,这个就是IP地址,可以使用inet_ntoa得到对应字符串
我在原来的问题里也回答你了,记迅脊得采纳哦
ysdoc的回答不对的,因为GetSockName的值是输出,不是桥晌输入,所以不需要用recvfrom去获取。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询