0 / 0 / 0
Регистрация: 06.05.2020
Сообщений: 9
|
|
1
|
Создать два клиента на один и тот же сокет. Используют один и тот же сокет
14.10.2021, 10:59. Показов 4382. Ответов 0
Необходимо изменить код сервера в соответствии с заданием
Создать два клиента на один и тот же сокет. Используют один и тот же
сокет.
Код сервера
C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| #include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <sys/un.h>
#include <unistd.h>
#include <stdlib.h>
int main (){
int server_sockfd, clientsock_fd;
int server_len;
socklen_t client_len;
struct sockaddr_un server_address, client_addres;
unlink("server_socket");
server_sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
server_address.sun_family = AF_UNIX;
strcpy(server_address.sun_path, "server_socket");
server_len = sizeof(server_address);
bind(server_sockfd, (struct sockaddr*) & server_address, server_len);
listen(server_sockfd,5);
int a;
client_len = sizeof(client_addres);
clientsock_fd = accept (server_sockfd, (struct sockaddr*) &client_addres, &client_len);
while(true){
printf("serwer waiting ...\n");
read(clientsock_fd, &a, 1);
printf("got from client %i\n", a);
a*=a;
write(clientsock_fd, &a, 1);
sleep(1);
}
close(clientsock_fd);
} |
|
Код клиента 1
C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| #include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <sys/un.h>
#include <unistd.h>
#include <stdlib.h>
#include <iostream>
int main (){
int sockfd;
int len, result, count = 0;
char ch = 'A';
struct sockaddr_un address;
sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
address.sun_family = AF_UNIX;
strcpy(address.sun_path, "server_socket");
len = sizeof(address);
result = connect(sockfd, (struct sockaddr*) &address, len);
if(result == -1){
printf("error in connection\n");
getchar();
exit(-1);
}
int a = 1;
while(count++ < 4){
printf("read num: ");
std::cin >> a;
write(sockfd, &a, 1);
sleep(1);
read(sockfd, &a, 1);
printf("char from server = %i\n", a);
}
printf("connection is over = %c\n", ch);
getchar();
close(sockfd);
exit(0);
} |
|
Код клиента 2
C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| #include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <sys/un.h>
#include <unistd.h>
#include <stdlib.h>
#include <iostream>
int main (){
int sockfd;
int len, result, count = 0;
char ch = 'A';
struct sockaddr_un address;
sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
address.sun_family = AF_UNIX;
strcpy(address.sun_path, "server_socket1");
len = sizeof(address);
result = connect(sockfd, (struct sockaddr*) &address, len);
if(result == -1){
printf("error in connection\n");
getchar();
exit(-1);
}
int a = 1;
while(count++ < 4){
printf("read num: ");
std::cin >> a;
write(sockfd, &a, 1);
sleep(1);
read(sockfd, &a, 1);
printf("char from server = %i\n", a);
}
printf("connection is over = %c\n", ch);
getchar();
close(sockfd);
exit(0);
} |
|
0
|