3 / 3 / 0
Регистрация: 11.07.2011
Сообщений: 24

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

11.07.2011, 18:18. Показов 2080. Ответов 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 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru