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
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
- socket ip地址的写法等(vc源码)
- IP地址的正则表达式写法
- vc 获取网络连接的ip,mac地址,dns,dhcp等详细信息
- iphone的IP地址源码
- 状态机的写法、复位等解析、存储IP核等
- TCP/IP socket 等的考点
- VC编程更新3322的ip地址
- VC编程更新3322的ip地址
- vc中IP地址控件的使用
- vc中IP地址控件的使用
- 获取本地IP地址的vc代码
- 关于ip地址等数据库的利用。
- 获取客户端的IP地址等信息
- VC++修改win7的ip,dns等
- socket ip地址
- VC++ Ping IP地址
- VC++ IP地址
- VC获取IP地址
- 用lua写一个闭包的例子(lua语言)
- lua输出arg参数的函数(lua语言)
- 求一元二次方程的根(lua实现)
- 如何判断自己是更适合技术岗位还是更适合销售类的岗位
- lua运算符优先级表(lua语言)
- socket ip地址的写法等(vc源码)
- lua求表中最大值序号及最大值的的函数(lua实现)
- Java布局管理器(五)之BoxLayout布局管理
- lua 中调用函数特殊的写法(lua语言)
- Cocos2d-x中的Visual studio 2012环境搭建(懒人专用)
- 将SharePoint 2010的workflow custom activity升级到SharePoint 2013遇到的问题
- 使用NPOI操作Excel导入导出数据
- 6.4.11:子查询
- 构造函数