Yerel ağda Çalışan bir Mesaj Programı
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Yerel ağda Çalışan bir Mesaj Programı
Merhaba arkadaşlar uzun zamandır foruma gelemiyordum. ama bugun yolum düştü.
çalıştığım işyerinde benden bir program istrediler.
messenger tarzında bi mesajlaşma programı
ama yerel ağda çalışacak
bizde yakklaşık olarak 100+ bilgisayar var
ve bu bu kadarda kullanıcı demektir.
şimdi ben bu projeye nasıl başlamalıyım
Not: Delphi7 ve firebird + sqlserver2005 kullanıyorum.
önerileriniz için şimdden çok teşekkür ederim
forumda aradım ama bulamadım.
çalıştığım işyerinde benden bir program istrediler.
messenger tarzında bi mesajlaşma programı
ama yerel ağda çalışacak
bizde yakklaşık olarak 100+ bilgisayar var
ve bu bu kadarda kullanıcı demektir.
şimdi ben bu projeye nasıl başlamalıyım
Not: Delphi7 ve firebird + sqlserver2005 kullanıyorum.
önerileriniz için şimdden çok teşekkür ederim
forumda aradım ama bulamadım.
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Re: Yerel ağda Çalışan bir Mesaj Programı
Bu konu forumda sıkça konuşulmuş.Messenger programı, bir server ve clientlardan oluşur.. Yani clientlar servera mesaj yollar, serverda mesajı iletilmesi gereken yere iletir. Bunun için serversocket ve clientsocket componentlerinden faydalanabilirsin.İndy componentleride işini fazlasıyla görüyor. Delphinin demo bölümünde bir messajlaşma programı mevcut.. Onuda inceleyebilirsin.
Kolay gelsin.
Kolay gelsin.
http://www.bargem.info
Yaşıyorum..... İnadına değil yaptıklarım. Herşey istediğim için oluyor. İstediğim için türkü dinliyorum. İstediğim için çalışıyorum. İstediğim için yaşıyorum ve istediğim için seni seviyorum...
Yaşıyorum..... İnadına değil yaptıklarım. Herşey istediğim için oluyor. İstediğim için türkü dinliyorum. İstediğim için çalışıyorum. İstediğim için yaşıyorum ve istediğim için seni seviyorum...
Re: Yerel ağda Çalışan bir Mesaj Programı
server ve clientsocket'i ciplak kullanmak is görmez. gelistirmek gerek.
giden ve gelen havuzu olusturmali. ag da trafik yogun oldugunda mesaj kismen gelecektir. ikinci bir firsatta socket mesajin kalan kismini gönderecek. ilk gelen mesajda nick belli olurken, ikinci mesaj nick'siz oldugu icin dummy olarak algilanacak. bunlarin havuzda bekletilmesi ve mesaj tamamlandiginda isleme girmesi gerekmekte. kisacasi, basit bisey degil. oldukca komplex bir yapi. cünkü bahsi gecen bilgisayar sayisi 2-3 degil 100 adet.
Allah sabir versin kardesim...
Selâm ve Dûa ile...
giden ve gelen havuzu olusturmali. ag da trafik yogun oldugunda mesaj kismen gelecektir. ikinci bir firsatta socket mesajin kalan kismini gönderecek. ilk gelen mesajda nick belli olurken, ikinci mesaj nick'siz oldugu icin dummy olarak algilanacak. bunlarin havuzda bekletilmesi ve mesaj tamamlandiginda isleme girmesi gerekmekte. kisacasi, basit bisey degil. oldukca komplex bir yapi. cünkü bahsi gecen bilgisayar sayisi 2-3 degil 100 adet.
Allah sabir versin kardesim...
Selâm ve Dûa ile...
kıdemsiz üye
Re: Yerel ağda Çalışan bir Mesaj Programı
cvplarınız için teşekkür ediyorum
araştırmaya devam ediyorum
gelişmeleri bu başlık altında elimden geldiğince paylaşacağım
araştırmaya devam ediyorum
gelişmeleri bu başlık altında elimden geldiğince paylaşacağım
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
- bulutsuzluk_35
- Üye
- Mesajlar: 124
- Kayıt: 06 Eki 2007 04:14
- Konum: İzmir-Ankara-İstanbul-Antalya
- İletişim:
Re: Yerel ağda Çalışan bir Mesaj Programı
Ben olsam şöyle yapardım.Ortada bir adet server ve buna bağlanan clientlar olurdu.Server'a bağlı bilgisayarlarında bağlantı bilgilerini clientlara udp yöntemiyle broadcast ederdim.Böylece client'larda online list'i oluştururdum.birisi birisine mesaj atmak istediğinde de bir client diğerindeki mesaj alma portunu bildiği için o porttan tcp ip ile bağlantı kurar hem mesaj hemde dosya gönderimi yapabilirlerdi.
Sistemde server sadece client ların iletişim bilgilerini ve online olup olmadıklarının bilgisini broadcast yapmak için olurdu.Diğer iletişimler clientlar arasında server araya girmeden olurdu.
Bu anlattıklarıma birşey diyorlar ama ben ne olduğunu hatırlayamadım şimdi.p2p olabilir belki .
Kolaygelsin.
Sistemde server sadece client ların iletişim bilgilerini ve online olup olmadıklarının bilgisini broadcast yapmak için olurdu.Diğer iletişimler clientlar arasında server araya girmeden olurdu.
Bu anlattıklarıma birşey diyorlar ama ben ne olduğunu hatırlayamadım şimdi.p2p olabilir belki .
Kolaygelsin.
Kod: Tümünü seç
try
try
inc(Bilgi);
except
sabir;
end;
finally
inc(Mutluluk);
end;
Re: Yerel ağda Çalışan bir Mesaj Programı
Bununla ilgili bir örnek yapmıştım eskiden az bişi derleyip düzelttim umarım işinize yarar
Gerçekten güzel bir uygulama
Açılışta PC bilgilerini alıp Oturum Kimlik kazanıyor ardından göndereceğiniz text UDP sinyallerine dönüşüp ağ ortamında yayılıyor
Kendiniz Biraz daha geliştirebilirsiniz
Alttaki kodları not defterine kaydedip uzantılarını Default olarak örnek project1.dpr , Unit1.pas , unit1.dfm verdiğinizde derleyip çalıştırabilirsiniz
--------------------DPR DOSYASI---------------
PAs dosyası altta
//----------------------- FRM DOSYASI -----------------------
Gerçekten güzel bir uygulama
Açılışta PC bilgilerini alıp Oturum Kimlik kazanıyor ardından göndereceğiniz text UDP sinyallerine dönüşüp ağ ortamında yayılıyor
Kendiniz Biraz daha geliştirebilirsiniz
Alttaki kodları not defterine kaydedip uzantılarını Default olarak örnek project1.dpr , Unit1.pas , unit1.dfm verdiğinizde derleyip çalıştırabilirsiniz
--------------------DPR DOSYASI---------------
Kod: Tümünü seç
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
PAs dosyası altta
Kod: Tümünü seç
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdUDPServer, IdBaseComponent, IdComponent, IdUDPBase,
IdUDPClient, idsockethandle,winsock;
type
TForm1 = class(TForm)
IdUDPClient1: TIdUDPClient;
IdUDPServer1: TIdUDPServer;
Memo1: TMemo;
Memo2: TMemo;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Label3: TLabel;
Edit3: TEdit;
Memo3: TMemo;
Label4: TLabel;
procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
procedure Memo1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Memo2Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// YEREL IP BULMAK
function getIPs: Tstrings;
type
TaPInAddr = array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: array[0..63] of Char;
I: Integer;
GInitData: TWSAData;
begin
WSAStartup($101, GInitData);
Result := TstringList.Create;
Result.Clear;
GetHostName(Buffer, SizeOf(Buffer));
phe := GetHostByName(buffer);
if phe = nil then Exit;
pPtr := PaPInAddr(phe^.h_addr_list);
I := 0;
while pPtr^[I] <> nil do
begin
Result.Add(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
/// IP DEN HOST BULMAK
function GetIPFromHost
(var HostName, IPaddr, WSAErr: string): Boolean;
type
Name = array[0..100] of Char;
PName = ^Name;
var
HEnt: pHostEnt;
HName: PName;
WSAData: TWSAData;
i: Integer;
begin
Result := False;
if WSAStartup($0101, WSAData) <> 0 then begin
WSAErr := 'Winsock is not responding.”';
Exit;
end;
IPaddr := '';
New(HName);
if GetHostName(HName^, SizeOf(Name)) = 0 then
begin
HostName := StrPas(HName^);
HEnt := GetHostByName(HName^);
for i := 0 to HEnt^.h_length - 1 do
IPaddr :=
Concat(IPaddr,
IntToStr(Ord(HEnt^.h_addr_list^[i])) + '.');
SetLength(IPaddr, Length(IPaddr) - 1);
Result := True;
end
else begin
case WSAGetLastError of
WSANOTINITIALISED:WSAErr:='WSANotInitialised';
WSAENETDOWN :WSAErr:='WSAENetDown';
WSAEINPROGRESS :WSAErr:='WSAEInProgress';
end;
end;
Dispose(HName);
WSACleanup;
end;
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
begin
memo2.Lines.LoadFromStream(adata);
edit1.Text:=abinding.PeerIP;
end;
procedure TForm1.Memo1Change(Sender: TObject);
begin
memo2.Clear;
memo2.Lines.Add(memo3.Text+' '+ edit3.Text+' -> '+ memo1.Text);
idUDPClient1.Broadcast(memo3.Text+' '+ edit3.Text+' -> '+ memo1.Text, 6060); // tüm ağa yayın yapıyor
end;
procedure TForm1.FormCreate(Sender: TObject);
var
Host, IP, Err: string;
begin
memo3.Clear;
memo3.Lines:= GETIPS;
if GetIPFromHost(Host, IP, Err) then begin
Edit3.Text := Host;
memo3.Text := IP;
end
else
MessageDlg(Err, mtError, [mbOk], 0);
end;
procedure TForm1.Memo2Change(Sender: TObject);
begin
//idUDPClient1.Broadcast(memo3.Text+' '+ edit3.Text+' -> '+ memo1.Text, 6060); // tüm ağa yayın yapıyor
end;
end.
Kod: Tümünü seç
object Form1: TForm1
Left = 450
Top = 106
Width = 409
Height = 448
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 16
Top = 232
Width = 110
Height = 13
Caption = 'Yaz g'#246'nder a'#351'a'#287#305'dakini'
end
object Label2: TLabel
Left = 48
Top = 0
Width = 78
Height = 13
Caption = 'G'#246'nderenin IP si'
end
object Label3: TLabel
Left = 264
Top = 0
Width = 102
Height = 13
Caption = 'Local PC yada HOST'
end
object Label4: TLabel
Left = 24
Top = 392
Width = 84
Height = 13
Caption = 'Nick -> PC ADI'
end
object Memo1: TMemo
Left = 16
Top = 248
Width = 361
Height = 129
ScrollBars = ssBoth
TabOrder = 0
OnChange = Memo1Change
end
object Memo2: TMemo
Left = 16
Top = 48
Width = 369
Height = 177
Lines.Strings = (
'Bilgi : UDP server hata vermemesi i'#231'in'
'uses sat'#305'r'#305'na idudpsocket handle eklenmesi '#351'artt'#305'r'
'yoksa declarations sat'#305'r'#305'nda hata verecektir')
ScrollBars = ssBoth
TabOrder = 1
OnChange = Memo2Change
end
object Edit1: TEdit
Left = 32
Top = 16
Width = 121
Height = 21
TabOrder = 2
end
object Edit3: TEdit
Left = 240
Top = 384
Width = 137
Height = 21
Enabled = False
TabOrder = 3
Text = 'PC-1'
end
object Memo3: TMemo
Left = 264
Top = 16
Width = 113
Height = 25
Enabled = False
TabOrder = 4
end
object IdUDPClient1: TIdUDPClient
Active = True
BroadcastEnabled = True
Port = 6060
Left = 8
Top = 328
end
object IdUDPServer1: TIdUDPServer
Active = True
BufferSize = 50000
BroadcastEnabled = True
Bindings = <>
DefaultPort = 6060
OnUDPRead = IdUDPServer1UDPRead
Left = 8
Top = 8
end
end
Kod: Tümünü seç
http://www.delphibasics.co.uk/RTL.asp?Name=DaysBetween
http://www.neonhaber.com/Static/mega-co ... index.html
www.delphican.con
Function PARSE( text, ilk, son:String ): String; //
begin
Delete(Text, 1, pos(ilk, Text) + Length(ilk)-1);
Result := Copy(Text, 1, Pos(Son, Text)-1);
end;
http://www.neonhaber.com/Static/mega-co ... index.html
www.delphican.con
Function PARSE( text, ilk, son:String ): String; //
begin
Delete(Text, 1, pos(ilk, Text) + Length(ilk)-1);
Result := Copy(Text, 1, Pos(Son, Text)-1);
end;
Re: Yerel ağda Çalışan bir Mesaj Programı
ilgilenen herkese çok teşekkür ediyorum
çalışmalarım devam ediyor.
çalışmalarım devam ediyor.
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz
Erkan ÇAĞLAR
Re: Yerel ağda Çalışan bir Mesaj Programı
bence kasmayıp pm gönderdiğim iki projeden biri üzerinden devam edin. 2. cisi java gerektirir.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog