socket ip地址的写法等(vc源码)

来源:互联网 发布:mac os x使用手册 编辑:程序博客网 时间:2024/06/07 04:44

socket ip地址的写法等

sockaddr_in m_addr;m_addr.sin_addr.S_un.S_addr=.....---------------------WINSOCK.H-------------------struct sockaddr_in {

short sin_family;

u_short sin_port;

struct in_addr sin_addr;

char sin_zero[8];

}; struct in_addr {

union {

struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;

struct { u_short s_w1,s_w2; } S_un_w;

u_long S_addr;

} S_un;};   可以看出微软定义了三种表示IP地址的方法,分别为u_char,u_short,u_long。如:192.168.0.1 表示1、sin_addr.S_un.S_un_b.s_b1=192sin_addr.S_un.S_un_b.s_b2=168sin_addr.S_un.S_un_b.s_b3=0sin_addr.S_un.S_un_b.s_b4=1 表示2、sin_addr.S_un.S_un_w.s_w1=168<<8|192sin_addr.S_un.S_un_w.s_w2=1<<8|0 表示3、sin_addr.Sun.S_addr=1<<24|0<<16|168<<8|192 /* or INADDR_ANY */ INADDR_ANY---------------------IN.H-------------------#define INADDR_ANY ((unsigned long int) 0x00000000);   INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。 一般来说,在各个系统中均定义成为0值。

  一般情况下,如果你要建立网络服务器应用程序,则你要通知服务器操作系统:请在某某IP地址的某某端口上进行侦听,并且把侦听到的数据包发送给我。这个过程,你是通过bind()系统调用完成的。也就是说,你的程序要绑定服务器的某地址,或者说:把服务器的某地址上的某端口占为已用。服务器操作系统可以给你这个指定的地址,也可以不给你。

  如果你的服务器有多个网卡(每个网卡上有不同的IP地址),而你的服务(不管是在udp端口上侦听,还是在tcp端口上侦听),出于某种原因:可能是你的服务器操作系统可能随时增减IP地址,也有可能是为了省去确定服务器上有什么网络端口(网卡)的麻烦 ,可以要在调用bind()的时候,告诉操作系统:“我需要在某某端口上侦听,所以发送到服务器的这个端口,不管是哪个网卡/哪个IP地址接收到的数据,都是我处理的。”这时候,服务器程序则在0.0.0.0这个地址上进行侦听。 LPSOCKADDR--------------------WINSOCK.H-------------------typedef struct sockaddr SOCKADDR;

typedef struct sockaddr *PSOCKADDR;

typedef struct sockaddr FAR *LPSOCKADDR;   可以看出LPSOCKADDR和SOCKADDR *是一样的,但是如果用SOCKADDR *A,B;容易把变量B也混淆成指针类型,用LPSOCKADDR A,B;则很容易理解到A,B都是指针。 WSAAsyncSelect()--------------------WINSOCK.H-------------------int PASCAL FAR WSAAsyncSelect(SOCKET s, HWND hWnd, u_int wMsg,long lEvent); 作用:要求某一Socket有事件(event)发生时通知使用者。参数:  s:Socket的编号。  hWnd:接受消息的窗口句柄。  wMsg:传回窗口的消息。  lEvent:接收的事件。返回值:  成功:0  失败:SOCKET_ERROR   若针对某SOCKET重复执行此函数,则以最后一次执行时设置的为准。若要取消对某SOCKET的所有设定,则lEvent设置为0执行此函数。  lEvent详细参数见:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/wsaasyncselect_2.asp
原创粉丝点击