Изпращане на съобщение до определен потребител

Когато клиент се свърже, можете да разберете неговия ip ServerSocket1.Socket.Connections[0].RemoteAddress; и след това изпратете каквото искате до тези връзки

Всичко е обратното. Клиентът не възнамеряваше да се свърже, но трябва да изпрати съобщение. Трябва да изпратите TClientSocket" към TServerSocket на уведомения клиент

>Когато клиент се свърже, можете да разберете неговия ip >ServerSocket1.Socket.Connections[0].RemoteAddress; >и след това изпратете каквото искате до тези връзки

Това е проблемът - КАК да изпратим информация до конкретно IP на клиент, свързан към системата?

Манипулатор на клиента:

varMyStream:TMemoryStream; започнете MyStream:=TMemoryStream.Create; MyStream.LoadFromFile("c:\windows\desktop\demo.txt"); NMStrm1.PostIt(MyStream); MyStream.Free; край;

Манипулатор на сървъра:

процедура TForm1.NMStrmServ1MSG(Подател: TComponent; const sFrom: String; strm: TStream); var MyStream:TMemoryStream; започнете MyStream:=TMemoryStream.Create; MyStream.CopyFrom(strm,NMStrmServ1.BytesTotal); MyStream.SaveToFile("c:\windows\desktop\demo2.txt"); край;

Просто използвайте тези TNMStrmServ и TNMStrm компоненти! от Snoop

Ако клиентът няма да се свърже, тогава как можете да го получите изобщо? Можете да изпратите нещо до някой компютър в мрежата, но "несвързаният" клиентняма да го получи!.

Но как да изпратите съобщение до конкретен IP на свързания клиент чрезServerSocket.

Wizard_Ex, моля, ела! Сапун: [email protected]

Майстори! :( Помощ, моля. Ако не съм обяснил напълно, тогава обяснявам. Има група потребители, които са онлайн. Има списък (StringList) на тези потребители и техните IP адреси (списъкът се актуализира следпотребителски изход-влизане чрез запитване на всички свързани потребители). Сървърът трябва да изпрати съобщение чрез свояServerSocketдо потребител с конкретно име. Той търси името на този потребител в списъка, след това получава от този списък IP, съответстващ на този потребител, и след това трябва да изпрати това съобщение до този потребител с даденото IP чрез неговияServerSocket.

Моля, кажете ми Майстори!

Ако ще изпращате през ServerSocket, тогава клиентите са свързани към него .. тогава можете да преминете през списъка с връзки в цикъл и да получите номера на връзката от когото ви трябва IP и да го изпратите до него. но от твоето обяснение ми се струва, че не ти трябва сокет сървър. Разбирам, че връзките не са установени.

Ох, ох, ох. странно - наистина ли толкова зле обяснявам, че не става ясно =))))))))).

>Ако ще изпращате чрез ServerSocket, тогава клиентите са свързани към >това..след това можете да преминете през списъка с >връзки в цикъл и да получите номера на връзката, от когото имате нужда от IP и >да му изпратите.

КАК СЕ ИЗПРАЩА. КАК. КАК. КАК. ДА. ДА. ДА.ТОЧНО ТОЗИ СЛУЧАЙ. КАК. Донесете, моля, част от кода.

Разбирам, че изпращате данните през TClientSocket. Те се приемат чрез TServerSocket. Ако това е, от което се нуждаете, те могат да ви кажат как. Странно как обясняваш всичко.

>Доколкото разбирам, те изпращат данни чрез TClientSocket. Те се приемат чрез >TServerSocket. Ако това е, което искате, те могат > да ви кажат как. Странно как обясняваш всичко.

Обратно. Те изпращат чрез TServerSocket и получават чрез TClientSocket.

Вижте \PROGRAM FILES\BORLAND\Delphi5\Demos\Internet\Chat

procedure TChatForm.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); започнете ако ключ =VK_Return then if IsServer then ServerSocket.Socket.Connections[0].SendText(Memo1.Lines[Memo1.Lines.Count - 1]) else ClientSocket.Socket.SendText(Memo1.Lines[Memo1.Lines.Count - 1]); край;

Това случайно да изглежда като това, което искахте?

Не знам как ще изпращате чрез TServerSocket, ще ви дам част от кода как изпращам чрез TClientSocket: