Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 273
от 05.05.2006, 20:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 158, Экспертов: 29
В номере:Вопросов: 1, Ответов: 1


Вопрос № 41740: Здравствуйте. Помогите создать программу вида клиент сервер. Программа чат. Чтоб по Интернету мы с другом разговаривать могли, он вводит мой IP и порт (я сервер), и мы разговариваем. Вот некоторые разработки: Со стороны сервер я сде...

Вопрос № 41.740
Здравствуйте.
Помогите создать программу вида клиент сервер. Программа чат. Чтоб по Интернету мы с другом разговаривать могли, он вводит мой IP и порт (я сервер), и мы разговариваем.

Вот некоторые разработки:
Со стороны сервер я сделал следующее: добавил Winsock1
И ввёл код:
Private Sub Form_Load()
Winsock1.Listen
End Sub
Но, нужно чтоб все пришедшие данные выводились в Text1Box (так как он мне будет что-либо писать), и назначить определенный порт, по которому товарищ будет подключаться.
Со стороны клиента:
Private Sub Command1_Click()
Winsock1.RemoteHost = Text1.Text
Winsock1.RemotePort = Text2.Text
Winsock1.Connect
End Sub
Наверное данные нужно отправлять из Text3.Text (в Text3.Text сообщение которое он мне отправляет) серверу, примерно так:
Private Sub Command2_Click()
Dim a As Variant
a = Text3.Text
Winsock1.SendData a
End Sub
<hr>

Отправлен: 30.04.2006, 20:07
Вопрос задал: Неизвестнов Том (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Филатов Евгений Геннадьевич
Здравствуйте, Неизвестнов Том!

Попробовал сделать.
Клиентская часть:
Создаем форму, называем frmClient, помещаем на форму объект WinSock под именем tcpClient, два TextBox :Text1 и Text2 - соответственно IP адрес и порт компьютера, к которому надо подключиться (можно сразу заполнить нужными значениями), под ними кнопку под именем cmdConnect, ниже два TextBox : txtSendData - передаваемые данные и txtOutput (свойство Enabled = False) - принимаемые данные.
В код формы заносим:

Private Sub cmdConnect_Click()
' Устанавливаем параметры соединения
tcpClient.RemoteHost = frmClient.Text1
tcpClient.RemotePort = frmClient.Text2
'Устанавливаем соединение
tcpClient.Connect
cmdConnect.Caption = "Связь установлена"
cmdConnect.Font.Bold = True
cmdConnect.BackColor = &HFFFF&
'Чтобы увидеть, что включена связь
End Sub

Private Sub txtSendData_Change()
'Сначала проверяем, что соединение не закрыто, потом передаем данные
If tcpClient.State <> sckClosing Then
tcpClient.SendData txtSendData.Text
Else
MsgBox ("Связь потеряна")
End
End If
End Sub

Private Sub tcpClient_DataArrival (ByVal bytesTotal As Long)
Dim strData As String
If tcpClient.State <> sckClosing Then
'Выводим принятые данные
tcpClient.GetData strData
txtOutput.Text = strData
Else
MsgBox ("Связь потеряна")
End
End If
End Sub

Серверная часть:
Создаем форму, называем frmServer, помещаем на форму объект WinSock под именем tcpServer, Text3 - порт сервера (нужно сразу заполнить нужным значением, т.к. сразу используется при запуске программы), ниже два TextBox : txtSendData - передаваемые данные и txtOutput (свойство Enabled = False) - принимаемые данные.
В код формы заносим:

Private Sub Form_Load()
'Устанавливаем порт на прослушивание
tcpServer.LocalPort = frmServer.Text3
tcpServer.Listen
End Sub

Private Sub tcpServer_ConnectionRequest (ByVal requestID As Long)
'После получения запроса на установление связи перед принятием данных закрываем прослушивание и открываем связь
If tcpServer.State <> sckClosed Then
tcpServer.Close
End If
tcpServer.Accept requestID
End Sub

Private Sub txtSendData_Change()
If tcpServer.State <> sckClosing Then
tcpServer.SendData txtSendData.Text
Else
MsgBox ("Connect terminated")
End
End If
End Sub

Private Sub tcpServer_DataArrival (ByVal bytesTotal As Long)
Dim strData As String
If tcpServer.State <> sckClosing Then
tcpServer.GetData strData
txtOutput.Text = strData
Else
MsgBox ("Connect terminated")
End
End If
End Sub

На другой машине устанавливается клиентская часть (Client.exe). На сервере запускается программа, после этого можно запустить клиентскую и нажать кнопку "Установить связь". В верхний TextBox вводятся данные, которые отображаются в нижнем у оппонента. Единственная проблема - сервер запускается только под VB (компилю и запускаю Server.exe - вылетает ошибка, хотя в оболочке работает нормально). Может у Вас получиться исправить. По крайней мере, связь работает.

С уважением.
Ответ отправил: Филатов Евгений Геннадьевич (статус: 2-ой класс)
Ответ отправлен: 04.05.2006, 17:58


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.32 от 03.05.2006
Яндекс Rambler's Top100

В избранное