Надсилання повідомлення певному користувачеві
Коли клієнт коннектиться ти можеш дізнатися його ip ServerSocket1.Socket.Connections[0].RemoteAddress; і потім посилай на цей connections все що хочеш
Все навпаки. Клієнт і не збирався підключатися, але йому треба надіслати повідомлення. Слати треба TClientSocket"ом на TServerSocket сповіщеного клієнта
>Коли клієнт коннектиться ти можеш дізнатися його ip >ServerSocket1.Socket.Connections[0].RemoteAddress; >і потім посилай на цей connections все що хочеш
У цьому і проблема - ЯК надіслати інформацію на конкретний IP клієнта, підключеного до системи?
Обробник для клієнта:
var MyStream:TMemoryStream; begin MyStream:=TMemoryStream.Create; MyStream.LoadFromFile("c:\windows\робочий стіл\demo.txt"); NMStrm1.PostIt(MyStream); MyStream.Free; end;
Обробник для сервера:
procedure TForm1.NMStrmServ1MSG(Sender: TComponent; const sFrom: String; strm: TStream); var MyStream:TMemoryStream; begin MyStream:=TMemoryStream.Create; MyStream.CopyFrom(strm,NMStrmServ1.BytesTotal); MyStream.SaveToFile("c:\windows\робочий стіл\demo2.txt"); end;
Тільки скористайся цими компонентами TNMStrmServ та TNMStrm! from snoup
Якщо клієнт і не має наміру коннектитися, то як взагалі його можна дістати? Можна послати щось на якийсь комп'ютер у мережі, але "несконнективний" клієнт йогоне отримає!.
Але як надіслати повідомлення на конкретний IP підключеного клієнта черезServerSocket.
Wizard_Ex, прийшли, будь ласка! Мило: [email protected]
Майстри! :( Допоможіть plz. Якщо неповно пояснив, то пояснюю. Є група користувачів, що знаходяться в онлайні. Є список (StringList) цих користувачів та їх IP-шники (список оновлюється післявиходу-входу користувача за допомогою опитування всіх підключених користувачів). Серверу необхідно надіслати через власнийServerSocketповідомлення користувачеві з безпосереднім ім'ям. Він шукає ім'я цього користувача у списку, потім дістає з цього списку IP, що відповідає даному користувачеві і далі він повинен надіслати даному користувачеві з даними IP це повідомлення через свійServerSocket.
Будь ласка, підкажіть, Майстра!
Якщо ти збираєшся посилати через ServerSocket значить клієнти до нього приєднані .. то ти можеш в циклі пробігтися по списку коонектів і у кого потрібний IP отримаєш номер коннекта і пошлеш йому. але з твого пояснення мені здається, що тобі потрібен сервер сокет..т.к. з'єднання я так зрозумів не встановлено.
Ох ох ох. дивно – невже я так погано пояснюю, що так не зрозуміло =)))))))))).
>Якщо ти збираєшся посилати через ServerSocket значить клієнти до >його приєднані..то ти можеш у циклі пробігтися по списку >коонектів і у кого потрібний тобі IP отримаєш номер коннекта і >пошлеш йому.
ЯК ПОСЛАТИ. ЯК. ЯК. ЯК. ТАК. ТАК. ТАК.САМЕ ТАКИЙ ВИПАДОК. ЯК. Наведіть, plz, шматок коду.
Я так розумію, що надсилають дані через TClientSocket. Через TServerSocket їх приймають. Якщо це те, що треба, можуть сказати як. Дивно ви все пояснюєте.
>Я так розумію, що надсилають дані через TClientSocket. Через >TServerSocket їх приймають. Якщо це те, що треба може сказати як. Дивно ви все пояснюєте.
Навпаки. Через TServerSocket відправляють, а через TClientSocket приймають.
See \PROGRAM FILES\BORLAND\Delphi5\Demos\Internet\Chat
процесор TChatForm.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key =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]); end;
Це випадково не схоже на те, що ти хотів?
Не знаю як Ви збираєтеся відправити через TServerSocket, я Вам наведу шматок коду, як я посилаю через TClientSocket: