Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Немного о Winsok (передача сообщения определенному IP)  (Прочитано 16840 раз)
0 Пользователей и 1 Гость смотрят эту тему.
JohnBraxton
Гость
« : 04-08-2009 02:23 » 

Парни! Подскажите пожалуйста! Как передать сообщение определенному IP адресу???
Записан
Naghual
Модератор

ua
Offline Offline
Пол: Мужской
ОПТИМИСТ


WWW
« Ответ #1 : 04-08-2009 07:42 » 

Для начала определим понятия.
Что есть Сообщение и что есть Передать?
Должно ли оно быть  в каком-то определенном формате-протоколе?
Должны ли мы задуматься над тем что-бы оно было принято?
Записан
JohnBraxton
Гость
« Ответ #2 : 04-08-2009 15:52 » 

Ну связываемся мы по sckTCPProtocol
Формат текстовый
Короче... ТекстБокс, в него пишим сообщение и отправляем определенному IP адресу...
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #3 : 04-08-2009 16:01 » 

Передать сообшение то ерунда. А вот принять его, тут проблемы. Настраиваеш свой компонент IP адрес + порт. И отсылаеш сообшение. Принимаюшая сторона должна прослушивать заданный порт и при получении сообшения, отрабатывать его. Дальше не помогу, VB не знаю.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Naghual
Модератор

ua
Offline Offline
Пол: Мужской
ОПТИМИСТ


WWW
« Ответ #4 : 04-08-2009 16:11 » 

JohnBraxton, Вы не ответили на мой последний вопрос.
Записан
JohnBraxton
Гость
« Ответ #5 : 05-08-2009 02:24 » 

Ну я уже сделал клиентскую и серверную часть программы. Прога что то на подобе локального чата, работает нормально, слушает, принимает, в общем проблем нет. Но сервак построен так что при получении сообщения от клиента, он разсылает его всем подключенным клиентам. Вот я и хотел узнать как можно отправить сообщение определенному клиенту зная его IP адресу.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 05-08-2009 03:19 » 

JohnBraxton, расскажи, как реализовал...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Naghual
Модератор

ua
Offline Offline
Пол: Мужской
ОПТИМИСТ


WWW
« Ответ #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
Модератор

ua
Offline Offline
Пол: Мужской
ОПТИМИСТ


WWW
« Ответ #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
Модератор

ua
Offline Offline
Пол: Мужской
ОПТИМИСТ


WWW
« Ответ #12 : 05-08-2009 09:44 » 

Улыбаюсь
А RemoteHost тебя не наводит на умные мысли?
Записан
JohnBraxton
Гость
« Ответ #13 : 05-08-2009 14:05 » 

Да я тоже обратил внимание.. Просто не знаю как правельно написать...
Записан
JohnBraxton
Гость
« Ответ #14 : 05-08-2009 14:09 » 

Это же я использую для подключения к серверу... а не для передачи..
Записан
Naghual
Модератор

ua
Offline Offline
Пол: Мужской
ОПТИМИСТ


WWW
« Ответ #15 : 05-08-2009 14:47 » 

Улыбаюсь  Жжош!
А передача ведется не на тот сервер к которому подключился?
Записан
JohnBraxton
Гость
« Ответ #16 : 05-08-2009 16:22 » 

Да вы не поняли... сообщение на сервак передается, сервак передает остальным клиентам... Все работает... вот с сервака на определенный IP адрес я не знаю как!!!
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #17 : 05-08-2009 16:25 » 

JohnBraxton, на сервере нужно завести клиентский сокет, который подключится к нужному IP (а на нужном IP должна быть слушалка-сервер). Что сложного то ? Улыбаюсь
Записан

JohnBraxton
Гость
« Ответ #18 : 05-08-2009 16:27 » 

Сам код!!! я не знаю как пишется!!
Записан
Naghual
Модератор

ua
Offline Offline
Пол: Мужской
ОПТИМИСТ


WWW
« Ответ #19 : 05-08-2009 16:29 » 

У тебя уже все есть.
Просто вместо 127.0.0.1 напиши Айпишник требуемого компа
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines