在Linux中创建很多套接字的方法是通过使用socket()
系统调用来创建套接字。以下是一个简单的示例,展示了如何在Linux中创建多个套接字:
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
#include<stdio.h>
#include <errno.h>
int main(int argc, char *argv[]) {
int num_sockets = 10;
int sockets[num_sockets];
for (int i = 0; i < num_sockets; i++) {
sockets[i] = socket(AF_INET, SOCK_STREAM, 0);
if (sockets[i] < 0) {
perror("socket");
exit(EXIT_FAILURE);
}
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(8080 + i);
addr.sin_addr.s_addr = INADDR_ANY;
if (bind(sockets[i], (struct sockaddr *)&addr, sizeof(addr)) < 0) {
perror("bind");
exit(EXIT_FAILURE);
}
if (listen(sockets[i], 10) < 0) {
perror("listen");
exit(EXIT_FAILURE);
}
printf("Created socket %d on port %d\n", sockets[i], ntohs(addr.sin_port));
}
// 等待连接
for (int i = 0; i < num_sockets; i++) {
int client_fd = accept(sockets[i], NULL, NULL);
if (client_fd < 0) {
perror("accept");
exit(EXIT_FAILURE);
}
printf("Accepted connection on socket %d\n", client_fd);
}
return 0;
}
这个示例创建了10个套接字,并绑定到不同的端口上,然后监听连接。在实际应用中,您可能需要根据需求调整套接字的数量和绑定的端口。
请注意,创建大量套接字可能会导致系统资源不足,因此请确保您的系统具有足够的资源来处理所有套接字。在实际应用中,您可能需要考虑使用线程池或异步I/O来处理连接和请求。
领取专属 10元无门槛券
手把手带您无忧上云