Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
3 / 3 / 0
Регистрация: 11.07.2011
Сообщений: 24

Организация консольного чата на С

11.07.2011, 18:18. Показов 2087. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста,есть 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
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <memory.h>
#include <fcntl.h>/* open() and O_XXX flags */
#include <unistd.h> /* close() */
#define SRV_PORT 1234
#define BUF_SIZE 64
#define TXT_QUEST "Кто ты?\n"
int  main ()
{
    int s, s_new;
    int from_len;
    char buf[BUF_SIZE];
    struct sockaddr_in sin, from_sin;
    s = socket (AF_INET, SOCK_STREAM, 0);
   memset ((char *)&sin, '\0', sizeof(sin));
    sin.sin_family = AF_INET;
   sin.sin_addr.s_addr = INADDR_ANY;
    sin.sin_port = SRV_PORT;
   bind (s, (struct sockaddr *)&sin, sizeof(sin));
    listen (s, 3);
    while (1) {
     from_len = sizeof(from_sin);
      s_new = accept (s, &from_sin, &from_len);
     write (s_new, TXT_QUEST, sizeof(TXT_QUEST));
     from_len = read (s_new, buf, BUF_SIZE);
     write (1, buf, from_len);
     shutdown (s_new, 0);
     close (s_new);
      };
   }
Клиент
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
#include <sys/types.h>  
#include <sys/socket.h>  
#include <netinet/in.h>  
#include <netdb.h>  
#include <memory.h>   
#define SRV_HOST "localhost"  
#define SRV_PORT 1234  
#define CLNT_PORT 1235  
#define BUF_SIZE 64 
#define TXT_ANSW "Я первый клиент\n"  
main () { 
int s; 
int from_len; 
char buf[BUF_SIZE]; 
struct hostent *hp; 
struct sockaddr_in clnt_sin, srv_sin;  
s = socket (AF_INET, SOCK_STREAM, 0); 
memset ((char *)&clnt_sin, '\0', 
                       sizeof(clnt_sin)); 
clnt_sin.sin_family = AF_INET; 
clnt_sin.sin_addr.s_addr = INADDR_ANY; 
clnt_sin.sin_port = CLNT_PORT; 
bind (s, (struct sockaddr *)&clnt_sin, 
                   sizeof(clnt_sin));  
memset ((char *)&srv_sin, '\0', 
                sizeof(srv_sin)); 
hp = gethostbyname (SRV_HOST); 
srv_sin.sin_family = AF_INET; 
memcpy ((char 
*)&srv_sin.sin_addr,hp->h_addr,hp->h_length); 
srv_sin.sin_port = SRV_PORT; 
connect (s, &srv_sin, sizeof(srv_sin)); 
from_len = recv (s, buf, BUF_SIZE, 0); 
write (1, buf, from_len); 
send (s, TXT_ANSW, sizeof(TXT_ANSW), 0); 
close (s); 
exit (0);
  }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.07.2011, 18:18
Ответы с готовыми решениями:

Создание простейшого консольного чата
Всем привет, решил написать что-нибудь с использованием интернета, вот хочу сделать простой коснольный чат, 1 человек включает сервер,...

Необходима помощь в переносе консольного чата в Windows Forms
Нужна помощь в переносе консольного чата в Форму. using System; using System.Threading; using System.Net.Sockets; using...

У кого нибудь есть примеры создания консольного чата
У кого нибудь есть примеры создания консольного чата ? Хочу чат создать прямо в консольном приложении

3
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
11.07.2011, 18:36
во первых - отформатируйте код. глаз жалко.
во вторых - какие проблемы с вашим кодом?
0
3 / 3 / 0
Регистрация: 11.07.2011
Сообщений: 24
11.07.2011, 18:42  [ТС]
Цитата Сообщение от niXman Посмотреть сообщение
во первых - отформатируйте код. глаз жалко.
во вторых - какие проблемы с вашим кодом?
Проблем нет,сервер и клиент конектится.Вот только не могу понять как организовать общение между двумя клиентами.
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
11.07.2011, 23:19
твой сервер ведь отправляет клиенту сообщение и читает ответ. сделай по аналогии.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.07.2011, 23:19
Помогаю со студенческими работами здесь

Организация чата!
Привет!) Есть локальная сеть, нужно сделать просто он-лайн чат, через SQL сервак) в нем есть таблица Имени и IP получателя... Киньте...

Организация чата
Меня очень интересует следующее. Вот допустим я хочу организовать чат (C++) между 1 000 пользователями (количество не столь важно). То...

Организация чата, сохранение данных в файл txt
&lt;! DOSTYPE HTML&gt; &lt;html lang=&quot;en=ru&quot;&gt; &lt;head&gt; &lt;meta charset=&quot;UTF-8&quot;&gt; &lt;title&gt; Gostevaja kniga&lt;/title&gt; &lt;/head&gt; &lt;body&gt; ...

Правильная организация консольного приложения на сокетах
Всем привет, Подскажите, плз, как быть. Я пишу консольное приложение, которое должно работать в несколько потоков (на сокетах), т.е....

Организация чата в Интернете. Как модифицировать код для локальной сети
Здравствуйте коллеги! Есть программка, брандмауэром разрешена... Чат по локальной сети работает идеально, но вот по интернету нет... Вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru