Linux的send函数的使用
时间: 2023-06-15 10:03:49 浏览: 113
Linux函数大全_
在Linux中,send函数是用于发送数据的函数,其函数原型如下:
```c
#include <sys/socket.h>
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
```
其中,参数含义如下:
- sockfd:已经建立好连接的socket文件描述符。
- buf:发送数据的缓冲区。
- len:发送数据的长度。
- flags:一些标志位,常用的有0和MSG_NOSIGNAL。
send函数的返回值为实际发送的字节数,如果返回-1则表示发送失败,可以通过errno获得具体的错误码。
下面是一个简单的例子,演示如何使用send函数发送数据:
```c
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#define PORT 8080
int main() {
int sockfd;
struct sockaddr_in servaddr;
// 创建socket
sockfd = socket(AF_INET, SOCK_STREAM, 0);
// 设置连接地址和端口
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(PORT);
inet_pton(AF_INET, "127.0.0.1", &servaddr.sin_addr);
// 连接服务器
connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
// 发送数据
char *data = "hello world";
ssize_t n = send(sockfd, data, strlen(data), 0);
if (n < 0) {
perror("send error");
} else {
printf("send %ld bytes\n", n);
}
// 关闭socket
close(sockfd);
return 0;
}
```
在上面的例子中,我们首先创建了一个socket,并指定了连接的地址和端口。然后调用connect函数连接服务器,最后使用send函数发送数据。注意,在发送数据之前需要将数据的长度计算出来,并将其作为参数传递给send函数。发送完成后,我们关闭了socket。
阅读全文