/
bvs22
/
draft
Обзор
Документация
Войти
/
bvs22
/
draft
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
network/servers/test_client.c
95 строк
2 KB
Batomunkuev Vladimir
1
17 фев 2025, 08:48
17 фев 2025, 08:48
7478e9f
Код
Авторство
О чём код?
#include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <arpa/inet.h> #include <sys/socket.h> #include <pthread.h> #include <sys/signal.h> #include <time.h> #define PORT_SERVER 7777 #define IP_SERVER "127.0.0.1" #define NUM_CLIENT 100 void *client_tread(void *arg) { struct sockaddr_in server_add; int sock_fd; int add_len = sizeof(server_add); ssize_t byte_in; char *msg = "Hello server!"; char buffer[256] = {0}; if ((sock_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(1); } memset(&server_add, 0, add_len); server_add.sin_family = AF_INET; server_add.sin_addr.s_addr = inet_addr(IP_SERVER); server_add.sin_port = htons(PORT_SERVER); if (connect(sock_fd, (struct sockaddr *)&server_add, add_len) == -1) { perror("connect"); close(sock_fd); exit(1); } if (send(sock_fd, msg, strlen(msg), 0) == -1) { perror("send"); close(sock_fd); exit(1); } if ((byte_in = recv(sock_fd, buffer, sizeof(buffer) - 1, 0)) == -1) { perror("recv"); close(sock_fd); exit(1); } buffer[byte_in] = '\0'; printf("Client %ld: %s\n", (long)arg, buffer); close(sock_fd); return 0; } int main() { pthread_t thread_id[NUM_CLIENT]; clock_t start = 0, end = 0; double res; start = clock(); for(int i = 0; i < NUM_CLIENT; i++) { if (pthread_create(&thread_id[i], NULL, client_tread, (void *)(long)i) != 0) { perror("pthread_creat"); return 1; } } for(int i = 0; i < NUM_CLIENT; i++) { pthread_join(thread_id[i], NULL); } end = clock(); res = (double)(end - start) / CLOCKS_PER_SEC; printf("Время = %f\n", res); return 0; }