sock连接的企业函数
时间: 2023-11-12 20:09:05 浏览: 32
在Linux网络编程中,常用的建立TCP或UDP连接的函数有以下几个:
1. socket函数:创建一个套接字,返回一个文件描述符。函数原型为:
```c
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
```
其中,domain参数指定协议族,type参数指定套接字类型,protocol参数指定具体的协议。例如,创建一个TCP套接字:
```c
int sockfd = socket(AF_INET, SOCK_STREAM, 0); // AF_INET表示IPv4协议族,SOCK_STREAM表示TCP套接字,0表示默认协议
```
2. connect函数:与另一端建立TCP连接。函数原型为:
```c
#include <sys/socket.h>
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
```
其中,sockfd参数为之前创建的套接字文件描述符,addr参数是对方的地址信息,addrlen参数是地址信息的长度。例如,连接到IP地址为192.168.0.1,端口号为8888的TCP服务器:
```c
struct sockaddr_in server_addr;
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = inet_addr("192.168.0.1");
server_addr.sin_port = htons(8888);
int ret = connect(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr));
if (ret == -1) {
// 出错处理
}
```
3. bind函数:将套接字绑定到本地地址。函数原型为:
```c
#include <sys/socket.h>
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
```
其中,sockfd参数为之前创建的套接字文件描述符,addr参数是本地地址信息,addrlen参数是地址信息的长度。例如,将本地端口号为8888的UDP套接字绑定到IP地址为192.168.0.2的网卡上:
```c
struct sockaddr_in local_addr;
memset(&local_addr, 0, sizeof(local_addr));
local_addr.sin_family = AF_INET;
local_addr.sin_addr.s_addr = inet_addr("192.168.0.2");
local_addr.sin_port = htons(8888);
int ret = bind(sockfd, (struct sockaddr*)&local_addr, sizeof(local_addr));
if (ret == -1) {
// 出错处理
}
```
4. listen函数:进入监听状态,等待客户端连接。函数原型为:
```c
#include <sys/socket.h>
int listen(int sockfd, int backlog);
```
其中,sockfd参数为之前创建的套接字文件描述符,backlog参数指定连接队列的长度。例如,将TCP套接字进入监听状态:
```c
int ret = listen(sockfd, 10); // 最多同时处理10个连接请求
if (ret == -1) {
// 出错处理
}
```
5. accept函数:接受客户端连接请求。函数原型为:
```c
#include <sys/socket.h>
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
```
其中,sockfd参数为之前创建的套接字文件描述符,addr参数用于存储客户端的地址信息,addrlen参数用于存储地址信息的长度。例如,接受客户端连接请求:
```c
struct sockaddr_in client_addr;
socklen_t addrlen = sizeof(client_addr);
int clientfd = accept(sockfd, (struct sockaddr*)&client_addr, &addrlen);
if (clientfd == -1) {
// 出错处理
}
```
这些函数是在TCP或UDP编程中常用的函数,使用它们可以实现网络通信的基本功能。