c语言 socket 发送 http post
时间: 2024-01-26 19:00:42 浏览: 69
vc 用socket 发送http post 请求
4星 · 用户满意度95%
C语言可以通过socket发送HTTP POST请求,以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
int main() {
int sock;
struct sockaddr_in server;
char *message;
// 创建socket
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == -1) {
printf("创建socket失败\n");
exit(1);
}
printf("socket创建成功\n");
server.sin_addr.s_addr = inet_addr("服务器IP地址");
server.sin_family = AF_INET;
server.sin_port = htons(80);
// 连接服务器
if (connect(sock, (struct sockaddr *)&server, sizeof(server)) < 0) {
printf("连接服务器失败\n");
exit(1);
}
printf("已连接到服务器\n");
// 构造HTTP POST请求
message = "POST /path/to/resource HTTP/1.1\r\n"
"Host: localhost\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n"
"Content-Length: 15\r\n\r\n"
"name=John+Doe\r\n";
// 发送HTTP POST请求
if (send(sock, message, strlen(message), 0) < 0) {
printf("发送失败\n");
exit(1);
}
printf("请求已发送\n");
// 从服务器接收响应
char server_response[4096];
if (recv(sock, server_response, sizeof(server_response), 0) < 0) {
printf("接收失败\n");
exit(1);
}
printf("服务器响应:\n%s\n", server_response);
// 关闭socket连接
close(sock);
printf("连接已关闭\n");
return 0;
}
```
以上代码实现了使用C语言的socket发送HTTP POST请求。首先通过`socket`函数创建了一个套接字,然后使用`connect`函数连接到指定的服务器。接下来,构造了一个HTTP POST请求的字符串,并通过`send`函数发送到服务器。再使用`recv`函数从服务器接收响应,并将响应打印出来。最后,使用`close`函数关闭socket连接。
需要注意的是,上述代码中的`服务器IP地址`和`/path/to/resource`应根据实际情况进行替换。另外,还应当对函数的返回值进行合理的错误处理,确保请求和连接的成功。
阅读全文