C 语言socket api 示例
时间: 2023-11-16 18:05:03 浏览: 64
下面是一个简单的 C 语言 Socket API 示例,用于创建一个 TCP 客户端:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int sock;
struct sockaddr_in server;
char message[1000], server_reply[2000];
// 创建 socket
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == -1) {
printf("Could not create socket");
}
// 设置服务器地址和端口
server.sin_addr.s_addr = inet_addr("127.0.0.1");
server.sin_family = AF_INET;
server.sin_port = htons(8888);
// 连接服务器
if (connect(sock, (struct sockaddr *)&server, sizeof(server)) < 0) {
perror("connect failed. Error");
return 1;
}
printf("Connected to server\n");
while (1) {
printf("Enter message : ");
scanf("%s", message);
// 发送数据
if (send(sock, message, strlen(message), 0) < 0) {
puts("Send failed");
return 1;
}
// 接收服务器的响应
if (recv(sock, server_reply, 2000, 0) < 0) {
puts("recv failed");
break;
}
printf("Server reply : ");
puts(server_reply);
}
close(sock);
return 0;
}
```
首先,我们创建一个 socket,使用 `socket()` 函数,它的第一个参数是地址族(如 `AF_INET` 表示 IPv4),第二个参数是套接字类型(如 `SOCK_STREAM` 表示 TCP),第三个参数是协议(如 0 表示默认协议)。
然后,我们设置服务器地址和端口,使用 `struct sockaddr_in` 结构体表示。`inet_addr()` 函数将字符串形式的 IP 地址转换为网络字节序的整数形式。
接下来,我们使用 `connect()` 函数连接服务器。如果连接成功,该函数返回 0,否则返回 -1。
在循环中,我们使用 `send()` 函数发送数据到服务器,使用 `recv()` 函数接收服务器的响应。注意,我们需要手动在发送的数据末尾添加一个空字符,以便服务器正确解析数据。
最后,我们关闭 socket,使用 `close()` 函数。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)