4.4.3 绑定套接字
来源:互联网 发布:sopcast网络电视url 编辑:程序博客网 时间:2024/06/07 02:24
bind()函数完成套接字绑定。该函数的第一个参数是新创建套接字,第二个参数是服务器地址,第三个参数是地址结构大小。在程序中使用INADDR_ANY值作为网络地址,这意味着网络服务器提供者将使用适合的网络地址进行绑定。
如果该函数调用失败,则在调用HandleSocketError()函数之前,应先将套接字关闭。
绑定套接字的程序清单如下。
#define SERVERPORT 5555 //服务器TCP端口
//服务器套接字地址
SOCKADDR_IN addrServ;
addrServ.sin_family = AF_INET;
addrServ.sin_port = htons(SERVERPORT);
addrServ.sin_addr.s_addr = INADDR_ANY;
//绑定套接字
retVal = bind(sServer, (LPSOCKADDR)&addrServ, sizeof(SOCKADDR_IN));
if(SOCKET_ERROR == retVal)
{
closesocket(sServer); //关闭套接字
return HandleSocketError("Failed bind()!"); //错误处理
}
在Windows Sockets中存在三种有关地址的结构。
(1)in_addr为网络地址结构,大小为4个字节。
该结构声明如下:
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;
}
在应用程序中,调用inet_ntoa()和inet_add()函数实现,网络地址和“.”点间隔的字符串地址之间的转换。下面程序清单示例,将“.”间隔的字符串地址转为网络地址,和将网络地址转换为“.”间隔的字符串地址的方法。
unsigned long ulAddr = inet_addr("192.168.1.100");
char* pAddr = inet_ntoa(*(in_addr*)(&ulAddr));
(2)SOCKADDR_IN为socket地址结构,包含了地址家族、网络地址和端口等信息。
此结构被Windows Sockets用来指定将要连接本地或者远端的地址。该结构16字节大小,可以与SOCKADDR结构相互转换。
该结构声明如下:
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
q sin_family:地址家族,必须为AF_INET。
q port:端口。
q sin_addr:in_add类型的IP地址。
q sin_zero:填充该结构的大小,使之与SOCKADDR结构大小相同。
(3)SOCKADDR结构
该结构依据所使用协议的不同而不同,被内核用于存储地址,大小16字节。在TCP/IP协议下,使用SOCKADDR_IN结构代替该结构。
该结构声明如下。
struct sockaddr {
u_short sa_family;
char sa_data[14];
};
当调用bind()函数绑定套接字时,将SOCKADDR_IN结构类型强制转换为SOCKADDR结构类型,作为该函数的第二个参数。
- 4.4.3 绑定套接字
- VS2005 WINSOCK 网络端口 绑定套接字
- 网络子系统76_套接字绑定
- 绑定窗口的异步套接字编程
- setsockopt解决套接字绑定失败
- 使用Socket套接字绑定函数bind的一个细节
- 套接字绑定失败:已被占用问题
- svnserve: 不能绑定服务器套接字: 地址已经被使用
- 从Nginx绑定80端口学套接字编程
- Netty3 源码分析 - 套接字绑定实现原理
- kernel中套接字的绑定、监听、连接和断开
- accept()返回的套接字绑定哪个端口 新旧套接字的联系
- 根据SOCKET套接字获得此套接字绑定的端口号
- accept()返回的套接字绑定哪个端口 新旧套接字的联系
- 套接字学习3
- 4.4.2 创建套接字
- 18.3.3 套接字地址
- 3 套接字编程简介
- 使用commons-digester解析XML文档示例
- 4.4.1 初始化
- Windows CE下bootloader和驱动之间的通信
- 4.4.2 创建套接字
- "如何让自己成为一名黑客高手"
- 4.4.3 绑定套接字
- 内网计算机安全策略
- 更改Eclipse的jre
- eclipse编辑大小写
- 全角和半角
- 函数的线程安全与可重入
- 胡思乱想胡言乱语ASP.NET AJAX
- uclinux-2008R1-RC8(bf561)到VDSP5的移植(22):spinlock_types.h
- 4.4.4 监听