Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Send/recv on listener socket https://www.cyberforum.ru/ cpp-networks/ thread1745741.html
После переведения сокета в режим прослушивания (bind, listen), возможны ли на нем операции send/recv и к чему они приведут? Из документации это неочевидно.
Listen в TCP C++
У меня есть основной поток - в нем идет работа с UI, но есть так же сервер TCP, который слушает подключения и их обрабатывает. Я хочу вынести сервер в отдельный поток, чтобы он не блокировал работу в основном. Я видел реализацию многопоточного сервера - там для каждого accept() создается отдельный поток. Ну а listen нужно выносить в отдельный поток? listen не будет блокировать работу с UI в...
C++ Linux, HTTP сервер Пишу HTTP-сервер на данный момент, задача по учебе, поэтому boost и прочие дополнительные библиотеки использовать не могу. Хочется, чтобы сервер умел обрабатывать параллельно множество клиентов, моментально завершать работу сервера по требованию и не допускать лишней нагрузки процессора странными циклами. Вопрос в том, как правильно работать с сокетами. На данный момент у меня есть такой код для... https://www.cyberforum.ru/ cpp-networks/ thread1744048.html C++ CURL как передать заголовок Content-Type: application/x-www-form-urlencoded Подскажите как на С++ в POST запросе передать заголовок Content-Type: application/x-www-form-urlencoded , используя curl библиотеку https://www.cyberforum.ru/ cpp-networks/ thread1741554.html
Свой web сервер C++
От переизбытка свободного времени решил "написать сайт на c++" Но опыта в этой области совсем нет, хотел бы получить толчок, в каком направлении искать информацию Например, как лучше делать горячую замену кода, отвечающего за формирование страниц? Если в скриптовых языках можно просто отредактировать код (.php, например), то тут сложней, в голову приходит только компилировать отдельные...
C++ Работа с uw-imap https://www.cyberforum.ru/ cpp-networks/ thread1740207.html
В общем, нужно написать imap-клиент простенький, использовать надо uw-imap. С протоколом вроде более-менее познакомился, пообщался через telnet. А вот с самой библиотекой никак не могу познакомиться поближе, может, есть у кого полезные ссылочки или примеры программ?
C++ Блокирующий режим Привет. Написал тут небольшой сервер, в надежде, что он будет ловить подключение к себе любимому и некую полученную информацию транслировать в консоль... Выглядит чудо так: #include<iostream> #include<WinSock2.h> #include<windows.h> using namespace std; #pragma comment(lib, "ws2_32.lib") https://www.cyberforum.ru/ cpp-networks/ thread1739864.html C++ SNMP Агент
Здравствуйте уважаемый форумчане, уже несколько недель ищу не могу найти ничего путного/рабочего, посоветуйте пожалуйста. Нужно создать snmp agent. Он содержит две таблицы , структуру открыть их не могу. Поля некоторые колонки используют составные типы , такие как displaystring datetime и пару моих enum типов. Есть ли у кого годный материал как с нуля создать агент расширения который бы позволил...
C++ Работа с библиотекой WT (витти), как оформить внешний вид, файлы XML https://www.cyberforum.ru/ cpp-networks/ thread1738443.html
Здравствуйте. Ребята, сталкивающиеся с библиотекой WT, пожалуйста подскажите как прикручивается фаил XML к проекту. Как определяется в какой папке должны быть шаблоны. Как настраивается проект WT в VS. Например, я настроил свой проект, подключил библиотеки, пытаюсь разобраться с библиотекой виджитов. Есть например такой пример из архива разработчиков. Как запустить код из примера я худо...
C++ SNMP для начинающего Всем привет. Мой опыт это С++ и пара приложения на QT. И тут взяли на стажировку где будут в скором времени применять SNMP. И никто еще не знает по нему ничего. Сказали есть типа 4 месяца вот и изучай и будешь создавать модули. Если кто может помочь какой то информацией, или каких то примеров, с чего вообще начать, просьба подкиньте что то. Или может что то посоветуете. Сразу скажу что с... https://www.cyberforum.ru/ cpp-networks/ thread1737532.html
C++ WebSocket++ быстрое освоение
Здравствуйте, коллеги. Помогите, пожалуйста, быстро освоить эту библиотеку. Глубокого знания не требуется, просто надо быстро прикрутить сервер WebSocket к серверу, написанному на плюсах с использованием портов завершения. Есть WEB клиент, который умеет получать данные только(!) с сервера WebSocket и переделываться на WinSock2 не хочет. Я должен быстро дать ему поток в его протоколе....
C++ Белый Ip https://www.cyberforum.ru/ cpp-networks/ thread1736265.html
Смотрите у меня есть клиент андроид и сервер на Qt. Сервер находится удаленно то вне лок сети(даже может в другом городе), а доступ к нему нужен через интернет. Так вот клиент под андроид будет обращаться на этот удаленный сервер по своему белому Ip а не локальному верно же? И белый ip не будет менятся при каждом новом подключении к сети верно? При каждом новом подключении к сети будет менятся...
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 1
0

Чат на сокетах - C++ - Ответ 9192290

26.05.2016, 13:32. Показов 2479. Ответов 1
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Есть сервер и клиент когда отправляешь сообщение с первого клиента втором то сообщения не появляется у второго клиента а появляется после того когда с другой клиента отправляют первом и сообщение появляется шо у первого шо у второго. Помогите исправить.?
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
// сервер
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
 
#define PORT 9734
#define BUFSIZE 1024
 
 
void send_to_all(int j, int i, int sockfd, int nbytes_recvd, char *recv_buf, fd_set *master)
{
    if(FD_ISSET(j, master))
    {
        if(j != sockfd && j != i)
        {
            if(send(j, recv_buf, nbytes_recvd, 0) == -1)
                perror("send error");
        }
    }
}
 
void send_recv(int i, fd_set *master, int sockfd, int fdmax)
{
    int nbytes_recvd, j;
    char recv_buf[BUFSIZE], buf[BUFSIZE];
 
    if((nbytes_recvd = recv(i, recv_buf, BUFSIZE, 0)) <= 0)
    {
        if (nbytes_recvd == 0)
            printf("socket %d hung up\n", i);
        else
            perror("recv error");
        close(i);
        FD_CLR(i, master);
    }
    else
    {
        for(j = 0; j <= fdmax; j++)
        {
            send_to_all(j, i, sockfd, nbytes_recvd, recv_buf, master);
        }
 
    }
 
}
 
void connection_accept(fd_set *master, int *fdmax, int sockfd, struct sockaddr_in *client_addr)
{
    socklen_t addrlen;
    int newsockfd;
 
    addrlen = sizeof(struct sockaddr_in);
    if((newsockfd = accept(sockfd, (struct sockaddr *)client_addr, &addrlen)) == -1)
    {
        perror("accept error");
        exit(1);
    }
    else
    {
        FD_SET(newsockfd, master);
        if(newsockfd > *fdmax)
            *fdmax = newsockfd;
        printf("new connection from %s on port %d \n",inet_ntoa(client_addr->sin_addr), ntohs(client_addr->sin_port));
    }
}
 
void connect_request(int *sockfd, struct sockaddr_in *my_addr)
{
    int yes = 1;
 
    if((*sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
    {
        perror("Socket");
        exit(1);
    }
 
    my_addr->sin_family = AF_INET;
    my_addr->sin_port = htons(PORT);
    my_addr->sin_addr.s_addr = INADDR_ANY;
    memset(my_addr->sin_zero, '\0', sizeof my_addr->sin_zero);
 
    if(setsockopt(*sockfd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) == -1)
    {
        perror("setsockopt");
        exit(1);
    }
 
    if(bind(*sockfd, (struct sockaddr *)my_addr, sizeof(struct sockaddr)) == -1)
    {
        perror("bind error");
        exit(1);
    }
 
    if(listen(*sockfd, 10) == -1)
    {
        perror("Lisen error");
        exit(1);
    }
    printf("\nTCPServer Waiting for client on port 4950\n");
    fflush(stdout);
 
}
 
int main()
{
    fd_set master;
    fd_set read_fds;
    int fdmax, i;
    int sockfd = 0;
    struct sockaddr_in my_addr, client_addr;
 
    FD_ZERO(&master);
    FD_ZERO(&read_fds);
    connect_request(&sockfd, &my_addr);
    FD_SET(sockfd, &master);
 
    fdmax = sockfd;
    while(1)
    {
        read_fds = master;
        if(select(fdmax+1, &read_fds, NULL, NULL, NULL) == -1)
        {
            perror("select");
            exit(4);
        }
        for (i = 0; i <= fdmax; i++){
 
            if(FD_ISSET(i, &read_fds)){
                if(i == sockfd)
                    //new connection
                    connection_accept(&master, &fdmax, sockfd, &client_addr);
                else
                    //send_recv
                    send_recv(i, &master, sockfd, fdmax);
            }
        }
    }
    return 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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//клиент
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
 int main()
{
    char mes[2048];
    char buf[sizeof(mes)];
    char *IP, *point_str_htons;
    char str[20];
    int port,ch;
    int nomer;
    int read = 0;
    int sockfd;
 
    struct sockaddr_in address;
    struct sockaddr_in client;
 
    /* 1 створення TCP-сокета */
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
 
    if(sockfd < 0)
    {
        printf("socket");
        exit(1);
    }
    /* 2 Вказуємо параметри сервера */
    address.sin_family = AF_INET;
    address.sin_port = htons(9734);
    address.sin_addr.s_addr=inet_addr("192.168.....");
   if(connect(sockfd, (struct sockaddr *)&address, sizeof(address)) < 0)
    {
        perror("Connection");
        exit(2);
    }
 
while(1)
    {
        printf("Введіть повідомлення  ");
        if (!strcmp(gets(mes), "exit"))
        {
            close(sockfd);
            return 0;
        }
        printf("відправка повідомлення на сервер.\n ");
 
        /* 3 відправка повідомлення на сервер*/
        send(sockfd, mes, sizeof(mes), 0); /*Відправка повідомлення на сервер */
 
        printf("очікування повідомлення.\n");
       read = recv(sockfd, buf, sizeof(mes),1);
       printf("В= %d\n%s\n", read, buf); // Прийом повідомлення від сервера
 
    }
return 0;
}


Вернуться к обсуждению:
Чат на сокетах C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.05.2016, 13:32
Готовые ответы и решения:

Чат на сокетах
Я создаю чат на С ++, только такой в котором 1 сервер который как и клиент также может отправлять и...

Простой чат на сокетах
Доброго времени суток. Имеется VDS сервер с установленной на нём ОС Linux, на моём пк установлен...

О сокетах
Здравствуйте, возникло пару вопросов о сокетах. 1)Создаю я сервер и жду конекта, accept принимаю...

SDP на TCP сокетах
Всем привет. Написал приложение использующее TCP сокеты, теперь нужно чтобы по протоколу SDP оно...

1
26.05.2016, 13:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.05.2016, 13:32
Помогаю со студенческими работами здесь

Алгоритм сервера на сокетах
Помогите пожалуйста, только начал копаться в socket`aх. Уже создал простой &quot;эхо&quot; сервер и клиент к...

Многопоочност в сокетах VCL
Пишу приложене типа клиент-сервер, пр этом универсальное, то есть каждый хост в сети является...

Клиент и сервера на сокетах
Пытаюсь изучить Winsock, вот написал клиент и сервер. Сервер не дожидаясь запроса на подключение...

Нужна литература о сокетах
Доброго времени суток! Можете посоветовать какую-нибудь литературу по поводу сокетов в СИ++. В...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru