Предложения за писане на TCP IP система за съобщения (клиент/сървър) с помощта на Delphi 2010

Бих искал да напиша система за съобщения, използваща TCP IP в Delphi 2010. Бих искал да чуя какви са най-добрите ми опции за използване на стандартните компоненти на delphi 2010/indy компоненти за това.

Бих искал да напиша сървър, който слуша и препраща съобщения до всички машини в мрежата, работещи с клиент.

1.) а.) клиентите могат да изпратят съобщение до сървъра, което да бъде препратено към всички други клиенти б.) клиентите слушат за съобщения от други податели (чрез сървър) и показват съобщения.

2.) а.) Сървърът може да изпрати съобщение до всички клиенти б.) Сървърът препраща всички съобщения от клиенти към всички останали клиенти

благодаря за всякакви предложения

ЗАБЕЛЕЖКА: Не пиша програма за незабавни съобщения или чат. Това е просто система, в която потребителите могат да изпращат предупреждения/съобщения до други потребители - те не могат да отговарят един на друг! БЕЗ рекламни, shareware и т.н. връзки - моля! Бих искал да чуя за това как бихте се захванали с писането на този тип система и какви подходи бихте предприели и евентуално TCP IP архитектурата за съобщения, която бихте използвали. Независимо дали става дума за чист Winows API, компоненти на Indy и т.н., и т.н.


person IElite    schedule 23.12.2010    source източник
comment
Звучи като IP Multicasting   -  person Kenneth Cochran    schedule 23.12.2010
comment
ЗАБЕЛЕЖКА: Не пиша програма за незабавни съобщения или чат. Това е просто система, в която потребителите могат да изпращат предупреждения/съобщения до други потребители - те не могат да отговарят един на друг! БЕЗ рекламни, shareware и т.н. връзки - моля! Бих искал да чуя за това как бихте се захванали с писането на този тип система и какви подходи бихте предприели и евентуално TCP IP архитектурата за съобщения, която бихте използвали. Независимо дали става дума за чист Winows API, компоненти на Indy и т.н., и т.н.   -  person IElite    schedule 23.12.2010
comment
@Shane Преместих бележката ви във въпроса, където трябва да бъде посочен (вместо коментари).   -  person Eugene Mayevski 'Callback    schedule 24.12.2010
comment
Благодаря на всички за отговорите! И така, какво мислите всички за използването на indy, като например в тази демонстрация: indy10clieserv.sourceforge.net ИЛИ използване на пакетите TServerSocket и TClientSocket ?????   -  person IElite    schedule 27.12.2010
comment
@Shane TClientSocket и TServerSocket са остарели и остарели. Инди беше взет като заместник. Ако планирате дългосрочен проект, бих предложил сами да създадете прости обвивки за Winsock. Не е толкова трудно и не зависиш от код на трети страни със съмнително качество.   -  person Eugene Mayevski 'Callback    schedule 27.12.2010
comment
@codeelegance: Така е и мисля, че това е, което търсех. Знаете ли много за прилагането на това в Indy, като използвате компонента TIdIPMCastClient/Server? Мислех, че това може да се направи с Инди и просто чакам някой да ми даде малко по-добра насока. Ако имате какво да предложите, моля, публикувайте като отговор - благодаря!   -  person IElite    schedule 27.12.2010
comment
Съжалявам, запознат съм с концепцията за ip multicasting, но никога не съм се опитвал да я приложа (поради което не се опитах да отговоря директно на въпроса). За съжаление ip multicasting не гарантира доставка на пакети. PGM прави, но все още е експериментален. Всеки брой ESB може да се справи с това, но това може да е прекалено.   -  person Kenneth Cochran    schedule 28.12.2010


Отговори (6)


Ако това е само Windows и не искате да използвате библиотеки на трети страни, тогава можете да пропуснете TCP/IP и да отидете на Пощенски слотове.

Редактиране: ако искате гарантирана доставка, наименуваните тръби са по-добро решение. Това SO въпрос има няколко хубави отговори с примери за канали с имена на Delphi.

Пощенският слот е механизъм за еднопосочна междупроцесна комуникация (IPC). Приложенията могат да съхраняват съобщения в пощенски слот. Собственикът на пощенския слот може да извлича съобщения, които се съхраняват там. Тези съобщения обикновено се изпращат по мрежа до определен компютър или до всички компютри в определен домейн. Домейнът е група от работни станции и сървъри, които споделят име на група.

Нямат нужда от Windows домейн, работят през LAN.

DelphiPages има хубава надолу за извършване на IPC в Delphi, включително слотове за поща.

--джероен

person Jeroen Wiert Pluimers    schedule 24.12.2010
comment
Пощенските слотове не гарантират доставка и имат някои други странични ефекти, така че не са най-добрият вариант. В случая на OP това е чист pub-sub механизъм със специален сървър и TCP ще работи добре. И все пак правилният pub-sub със сериализиране на съобщения и т.н. е нетривиална задача. - person Eugene Mayevski 'Callback; 24.12.2010
comment
благодаря за забележката; Добавих частта с имената на тръбите заради това. - person Jeroen Wiert Pluimers; 24.12.2010

Ако искате да си спестите малко работа и използвайте готовото решение:

в горния ред. Последните две изброени по-скоро с информационна цел.

IMO 0MQ е най-добрият залог - той е добре обмислен, лек, бърз и надежден.

person g2mk    schedule 09.11.2011

Изглежда като публикуване-абониране на съобщения. kbmMW предлага такъв.

person Eugene Mayevski 'Callback    schedule 23.12.2010
comment
бих искал да напиша това сам, както посочих във въпроса си, вместо да разчитам на търговски компоненти. Не съм съвсем сигурен, че наборът, който предложихте, дори ще направи това, което искам - все пак благодаря за отговора - person IElite; 23.12.2010
comment
@Shane напиши система е доста широк израз. Колкото до kbmMW - наистина ли го провери? АКО възнамерявате да напишете свой собствен, тогава успешното внедряване би било чудесна проба, за да започнете. - person Eugene Mayevski 'Callback; 24.12.2010

Има клиент за незабавни съобщения от Aid Aim: http://www.aidaim.com/products/msgcommunicator/manual_instant-messaging-im-sdk/index.php

person Darian Miller    schedule 23.12.2010
comment
съжалявам, наистина не търся незабавни съобщения или чат. Търся система за предупреждение/съобщения (такава, която мога да създам с помощта на tcp ip). За предупреждаване на потребителите с важни съобщения. - person IElite; 23.12.2010
comment
Трябва да спомена, система, при която потребителите не могат да отговарят един на друг! - person IElite; 24.12.2010
comment
@Darian Miller Вече инсталирах msgcommunicator v11 за моя delphi XE8. Бих искал да направя чат клиент/сървър чрез интернет. Харесвам този компонент, но в мрежата не можах да намеря пример за клиент/сървър, нямам никаква идея как да го използвам? бихте ли ми предоставили прост пример за клиент/сървър на msgcommunicator. Благодаря предварително! - person Alex Kirov; 29.03.2017
comment
@AlexKirov съжалявам, не го правя. Това беше преди много време - ако не предоставят поддръжка в наши дни, не бих ги използвал. Може би опитайте: imcomponents.com/ivc.htm - person Darian Miller; 30.03.2017

Относно използването на indy, като например в тази демонстрация: indy10clieserv.sourceforge.net ИЛИ използване на пакета TServerSocket и TClientSocket

-> сега с x64 демонстрационна проба от INDY

person FranzB    schedule 08.11.2011

Надеждната работа на това изисква повече работа, отколкото си мислите – около 5% усилия, за да работи, и 95% усилия, за да се гарантира, че работи при всякакви обстоятелства, включително прекъсване на мрежата и т.н. Ако отидете тук (http://www.csinnovations.com/framework_delphi.htm) можете да видите как внедрих моите междупроцесни комуникации рамка. TCP материалите се състоят от около 10 000 реда код, използвайки компонентите на Indy.

person Misha    schedule 24.12.2010