【C语言】tcp接收服务

单线程

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/tcp.h>
#include <netinet/ip.h>
#include <arpa/inet.h>
#include <fcntl.h>
#include <sys/time.h>

#define BUFFER_SIZE (1024 * 1024) // 1MB buffer
#define TEST_DURATION 10 // 假定客户端也会持续发送数据同样的时长

int main(int argc, char *argv[]) {
    if (argc != 2) {
        fprintf(stderr, "Usage: %s <server_port>\n", argv[0]);
        return 1;
    }

    int server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (server_sockfd < 0) {
        perror("socket creation failed");
        return 1;
    }

    struct sockaddr_in server_addr;
    memset(&
在 C 语言中,使用 TCP 协议接收数据需要以下步骤: 1. 创建一个 TCP 套接字,使用 `socket()` 函数。 2. 连接远程服务器,使用 `connect()` 函数。 3. 发送数据,使用 `send()` 函数。 4. 接收数据,使用 `recv()` 函数。 接收函数的具体使用方法如下: ```c #include <sys/socket.h> ssize_t recv(int sockfd, void *buf, size_t len, int flags); ``` 参数说明: - `sockfd`:需要接收数据的套接字文件描述符。 - `buf`:指向接收缓冲区的指针。 - `len`:接收缓冲区的大小。 - `flags`:接收数据时指定的选项参数,一般设置为 0。 `recv()` 函数返回值为实际接收到的数据字节数,如果返回值为 0,则表示连接已经关闭,如果返回值为 -1,则表示接收数据出错。 示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #define SERVER_IP "127.0.0.1" #define PORT 8888 #define BUFFER_SIZE 1024 int main(int argc, char *argv[]) { int sockfd; struct sockaddr_in serv_addr; char buffer[BUFFER_SIZE]; ssize_t n; // 创建 TCP 套接字 sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { perror("socket"); exit(EXIT_FAILURE); } // 设置服务器地址和端口号 memset(&serv_addr, 0, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = inet_addr(SERVER_IP); serv_addr.sin_port = htons(PORT); // 连接远程服务器 if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { perror("connect"); exit(EXIT_FAILURE); } // 发送数据 char *message = "Hello, server!"; if (send(sockfd, message, strlen(message), 0) < 0) { perror("send"); exit(EXIT_FAILURE); } // 接收数据 memset(buffer, 0, BUFFER_SIZE); n = recv(sockfd, buffer, BUFFER_SIZE-1, 0); if (n < 0) { perror("recv"); exit(EXIT_FAILURE); } printf("Received message: %s\n", buffer); // 关闭套接字 close(sockfd); return 0; } ``` 上述代码展示了一个简单的 TCP 客户端,它可以向服务器发送一条消息,并接收来自服务器的回复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

109702008

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值