JohnBraxton
Гость
|
|
« : 04-08-2009 02:23 » |
|
Парни! Подскажите пожалуйста! Как передать сообщение определенному IP адресу???
|
|
|
Записан
|
|
|
|
Naghual
|
|
« Ответ #1 : 04-08-2009 07:42 » |
|
Для начала определим понятия. Что есть Сообщение и что есть Передать? Должно ли оно быть в каком-то определенном формате-протоколе? Должны ли мы задуматься над тем что-бы оно было принято?
|
|
|
Записан
|
|
|
|
JohnBraxton
Гость
|
|
« Ответ #2 : 04-08-2009 15:52 » |
|
Ну связываемся мы по sckTCPProtocol Формат текстовый Короче... ТекстБокс, в него пишим сообщение и отправляем определенному IP адресу...
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #3 : 04-08-2009 16:01 » |
|
Передать сообшение то ерунда. А вот принять его, тут проблемы. Настраиваеш свой компонент IP адрес + порт. И отсылаеш сообшение. Принимаюшая сторона должна прослушивать заданный порт и при получении сообшения, отрабатывать его. Дальше не помогу, VB не знаю.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Naghual
|
|
« Ответ #4 : 04-08-2009 16:11 » |
|
JohnBraxton, Вы не ответили на мой последний вопрос.
|
|
|
Записан
|
|
|
|
JohnBraxton
Гость
|
|
« Ответ #5 : 05-08-2009 02:24 » |
|
Ну я уже сделал клиентскую и серверную часть программы. Прога что то на подобе локального чата, работает нормально, слушает, принимает, в общем проблем нет. Но сервак построен так что при получении сообщения от клиента, он разсылает его всем подключенным клиентам. Вот я и хотел узнать как можно отправить сообщение определенному клиенту зная его IP адресу.
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #6 : 05-08-2009 03:19 » |
|
JohnBraxton, расскажи, как реализовал...
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Naghual
|
|
« Ответ #7 : 05-08-2009 06:52 » |
|
JohnBraxton, если вы действительно уже сделали то, о чем написали, тогда Ваш вопрос выглядит несколько дилетантски
|
|
|
Записан
|
|
|
|
JohnBraxton
Гость
|
|
« Ответ #8 : 05-08-2009 07:46 » |
|
Option Explicit Private Const ws_LOCAL_PORT = 353 Private Const MAX_SESSIONS = 11
Private Sub ws_ConnectionRequest(Index As Integer, ByVal requestID As Long) Dim i As Integer Dim msg As String
'Если слушаем If Index = 0 Then 'Ищим открытый сеанс For i = 1 To MAX_SESSIONS With ws_d_depo(i) If .State = sckClosed Then 'Подключаемся к сеансу i .Accept requestID 'Выходим из цикла Exit For End If End With Next End If End Sub
Private Sub ws_DataArrival(Index As Integer, ByVal bytesTotal As Long) Dim msg As String Dim i as Integer 'Получаем сообщение ws(Index).GetData msg, , bytesTotal
'Заносим в список lstMessages.AddItem msg
For i =1 To MAX_SESSIONS
With ws(i) If .State = 7 then ' sckConnected .SendData msg ' Передаем текущему клиенту ' Передаем остальным DoEvents End With Next End if End Sub
|
|
|
Записан
|
|
|
|
JohnBraxton
Гость
|
|
« Ответ #9 : 05-08-2009 07:47 » |
|
Ну просто я не знаю как написать чтоб WS передавал только определенному клиенту... Я пока только учусь... вот и интересуюсь....
|
|
|
Записан
|
|
|
|
Naghual
|
|
« Ответ #10 : 05-08-2009 08:15 » |
|
Вы привели кусок кода для приема сообщений. К тому-же какой-то странный... Наверное недописанный. Но спрашиваете о передаче. Где же ваш код передачи?
|
|
|
Записан
|
|
|
|
JohnBraxton
Гость
|
|
« Ответ #11 : 05-08-2009 09:26 » |
|
Да! Это код приема сообщения на сервере и рассылка остальным клиентам
подключение к серваку: Private Sub Form_Load() With ws .Close .Protocol = sckTCPProtocol .RemoteHost = "127.0.0.1" .RemotePort = 353 .Connect End With
код приема msg на клиенте: Dim msg As String
ws.GetData msg, , bytesTotal Text1.Text = msg ' Допустим
Отправка: Dim msg As String
If ws.State = sckConnected then msg = Text2.Text ws.SendData msg End If
|
|
|
Записан
|
|
|
|
Naghual
|
|
« Ответ #12 : 05-08-2009 09:44 » |
|
А RemoteHost тебя не наводит на умные мысли?
|
|
|
Записан
|
|
|
|
JohnBraxton
Гость
|
|
« Ответ #13 : 05-08-2009 14:05 » |
|
Да я тоже обратил внимание.. Просто не знаю как правельно написать...
|
|
|
Записан
|
|
|
|
JohnBraxton
Гость
|
|
« Ответ #14 : 05-08-2009 14:09 » |
|
Это же я использую для подключения к серверу... а не для передачи..
|
|
|
Записан
|
|
|
|
Naghual
|
|
« Ответ #15 : 05-08-2009 14:47 » |
|
Жжош! А передача ведется не на тот сервер к которому подключился?
|
|
|
Записан
|
|
|
|
JohnBraxton
Гость
|
|
« Ответ #16 : 05-08-2009 16:22 » |
|
Да вы не поняли... сообщение на сервак передается, сервак передает остальным клиентам... Все работает... вот с сервака на определенный IP адрес я не знаю как!!!
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #17 : 05-08-2009 16:25 » |
|
JohnBraxton, на сервере нужно завести клиентский сокет, который подключится к нужному IP (а на нужном IP должна быть слушалка-сервер). Что сложного то ?
|
|
|
Записан
|
|
|
|
JohnBraxton
Гость
|
|
« Ответ #18 : 05-08-2009 16:27 » |
|
Сам код!!! я не знаю как пишется!!
|
|
|
Записан
|
|
|
|
Naghual
|
|
« Ответ #19 : 05-08-2009 16:29 » |
|
У тебя уже все есть. Просто вместо 127.0.0.1 напиши Айпишник требуемого компа
|
|
|
Записан
|
|
|
|
|