VC++的Socket编程的一个小问题,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/06/03 17:19:07
先看一下代码:
const char* servername="127.0.0.1";
struct hosten* hp;
unsigned int addr;
struct sockaddr_in server;
...
SOCKET conn = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
...
if(inet_addr(servername) == INADDR_NONE)
{
hp = gethostbyname(servername);
}
esle
{
addr = inet_addr(servername);
hp = gethostbyaddr((char*)&addr,sizeof(addr),AF_INET);
}
...
server.addr.s_addr=*((unsigned long*)hp->h_addr);
...
问题1:struct hosten* hp; 是什么意思?这是一个记录什么的结构体?
问题2:SOCKET conn = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 其中的IPPROTO_TCP是什么意思?有什么作用?
问题3:inet_addr(servername) == INADDR_NONE —— inet_addr是什么函数?INADDR_NONE是什么意思?
问题4:gethostbyname 函数有什么功能?
问题5:gethostbyname(servername);和gethostbyaddr((char*)&addr,sizeof(addr),AF_INET);有什么区别?
问题6:解释一下server.addr.s_addr=*((unsigned long*)hp->h_addr);——尤其是hp->h_addr
谢谢!!!

struct hostent {
char FAR * h_name;
char FAR * FAR * h_aliases;
short h_addrtype;
short h_length;
char FAR * FAR * h_addr_list;
};
2, 使用的是tCP协议
3.地址转换,将IP地址转换成二进制
4.通过主机名取得主机地址
5.通过IP地址取香主机地址,网络中使用的IP是要转换成硬件地址的,
6 将结结体中的地址赋值

建议先看看socket api的书