Linux套接字通信常用函数-bind
来源:互联网 发布:matlab矩阵diff 编辑:程序博客网 时间:2024/05/20 01:46
bind函数主要用于套接字通信的服务器端,用于绑定服务器要监听的地址和端口,所需要的头文件
#include<sys/types.h>
#include<sys/socket.h>函数原型
int bind(int socket,const struct sockaddr* address,socklen_t address_len);
socket是你创建的套接字描述符,
address是服务器端的地址和端口,常见的使用方法如下
</pre><pre name="code" class="cpp"> struct sockaddr_in server_addr; bzero(&server_addr, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htonl(INADDR_ANY); server_addr.sin_port = htons(SERVER_PORT); /* 创建socket */ int server_socket_fd = socket(AF_INET, SOCK_DGRAM, 0); //tcp:SOCK_DGRAM if(server_socket_fd == -1) { perror("Create Socket Failed:"); exit(1); } /* 绑定套接口 */ if(-1 == (bind(server_socket_fd,(struct sockaddr*)&server_addr,sizeof(server_addr)))) { perror("Server Bind Failed:"); exit(1); }
返回值
当bind()函数调用错误的时候,它也是返回–1 作为错误发生的标志。errn 的值为错误代码。
注意
当你调用bind()的时候,不要把端口数设置的过小!小于1024 的所有端口都是保留下来作为系统使用端口的,没有root 权利无法使用。你可以使用1024 以上的任何端口,一直到65535
该函数用来指定一个端口号,一个IP地址,两者都指定,或者两者都不指定.可以不使用该函数调用。使用socket()得到套接口后可以直接调用函数conect()或者listen(),这时内核会自动给套接口分配一个地址和端口号(众所周知的端口号),这是常用的方法。只有在进程需要使用特定的网络地址和端口时才会进行绑定,即使用bind()函数。调用bind()的常见错误是EADDRINUSE,即指定的地址正在使用,主要是指定的端口号被使用了,IP地址可以被多个进程使用,但端口在同一时刻只能被一个进程使用。
套接口中port=0表示由内核指定端口号,设定sin_addr为INADDR_ANY(表示任意的意思),就有内核指定端口号。
设置端口为0的语句:
struct socketaddr_in seeveraddr;
serveraddr.port = 0;
设置IP的语句:
serveraddr.sin_addr = htonl(INADDR_ANY);
0 0
- Linux套接字通信常用函数-bind
- Linux套接字通信常用函数-listen
- Linux套接字通信常用函数-accept
- linux套接字编程常用函数
- 套接字API(二)bind函数
- 套接字&套接字地址结构和bind()函数
- 套接字编程常用函数
- 套接字编程常用函数
- 使用Socket套接字绑定函数bind的一个细节
- 套接字和TCP/IP等通信常用的数据结构和函数
- 套接字间通信的两个函数
- linux进程间通信--socket套接字
- linux进程间通信--域套接字
- linux进程间通信--socket套接字
- linux 进程间通信之套接字
- linux进程间通信--socket套接字
- linux系统中的进程通信(套接字)
- Linux 套接字编程中 bind 错误:bind fail:Address already in use 解决方法
- 我的java学习笔记之常见异常总结-2…
- 关于处理if和复杂逻辑的一种思路及…
- c#制作activeX之activeX自动更新
- 今天情绪突然失控-2015-12-22
- 将博客搬至CSDN
- Linux套接字通信常用函数-bind
- Android Studio使用OpenCV的配置方法
- Spark架构
- entity framework Include 不支持lambda表达式的解决方法
- Oracle AWR粗概
- 论文笔记001-Stacked Convolutional Auto-Encoders for Hierarchical Feature Extraction
- 解决EWEBEDITOR老版本在IE新版本下按钮失效问题一劳永逸的办法
- SpEL(3)
- Android开发——Android Studio中配置及使用OpenCV示例