Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 08.07.2012
Сообщений: 33

Как использовать два winsock контрола в одном проекте

04.08.2012, 17:50. Показов 1965. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не получается работать с двумя winsock контролами, второй не подключается.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.08.2012, 17:50
Ответы с готовыми решениями:

Как использовать winsock?
Мне нужно прекидывать короткие сообщения с одного компа на другой. Используется протакол UDP. Я не хочу устонавливать соединениt между...

Подскажите как разместить картинки иконки в одном проекте а использовать во втором
собственно сабж есть солюшен из десятка проектов хочу скинуть все картинки иконки в один проект прошу пример такого решения вот...

Как в одном проекте сделать два пространства имен?
сделал так. но выводит только то что в namespace Laba, a arifm не выводит в консоль using System; using System.Collections.Generic; ...

16
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38169 / 21104 / 4307
Регистрация: 12.02.2012
Сообщений: 34,693
Записей в блоге: 14
04.08.2012, 18:24
Что значит "не подключается"? Вот картинка:
Изображения
 
0
0 / 0 / 0
Регистрация: 08.07.2012
Сообщений: 33
04.08.2012, 18:31  [ТС]
хах) на форму то я могу поставить, а вот работать с ними двоими не получается, один подключается к другой программе, а второй нет
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38169 / 21104 / 4307
Регистрация: 12.02.2012
Сообщений: 34,693
Записей в блоге: 14
04.08.2012, 18:42
Цитата Сообщение от Dimansel Посмотреть сообщение
один подключается к другой программе, а второй нет
научись чётко выражать свои мысли... А лучше покажи код.
0
0 / 0 / 0
Регистрация: 08.07.2012
Сообщений: 33
04.08.2012, 19:29  [ТС]
это у меня программа - чат (клиент-сервер) состоит из двух проектов:
Сервер:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
'объявляю функцию проигрывания звука (буду проигрывать звук при приходе сообщения)
Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
 
'нажатие кнопки Connect
Private Sub cmdConnect_Click()
'указываю ip адреса для первого и второго winsock
tcpClient.RemoteHost = "93.79.151.166"
Winsock1.RemoteHost = "93.79.151.166"
'указываю порты
tcpClient.RemotePort = 1001
Winsock1.RemotePort = 1000
'убираю возможность повторного нажатия кнопки connect
cmdConnect.Enabled = 0
'включаю текст бокс для ввода сообщений
mess.Enabled = True
'включаю возможность нажатия кнопки отправки сообщения
cmdSend.Enabled = True
'включаю возможность нажатия кнопки Disconnect
Command2.Enabled = True
'тут все понятно
tcpClient.Connect
Winsock1.Connect
MsgBox "Connected!", 64, "Message"
'посылаем сообщение со второго winsock
Winsock1.SendData "Name"
End Sub
 
'нажатие кнопки отправки сообщения
Private Sub cmdSend_Click()
'проверяем что в поле для ввода что-то введено
If mess.Text <> "" Then
'если произошла ошибка показываем сообщение об ошибке
On Error GoTo ks
'отправляем сообщение
tcpClient.SendData mess.Text
'добавляем свое сообщение в listbox
List1.AddItem "Me: " + mess.Text
'таким образом делаем автоматический скроллинг
List1.ListIndex = List1.ListCount - 1
'очищаем поле ввода сообщений
mess.Text = ""
'выходим чтобы не попасть на сообщение об ошибке, когда ее нет
Exit Sub
ks:
mess.Text = ""
MsgBox "You aren't connected to server!", 16, "Error"
End If
End Sub
 
'это кнопка выхода
Private Sub Command1_Click()
If MsgBox("Do you wish exit?", vbExclamation + vbYesNo, "Message") = vbYes Then End
End Sub
 
'эта кнопка дисконнекта
Private Sub Command2_Click()
If MsgBox("Do you wish disconnect? All messages will be deleted.", vbQuestion + vbYesNo, "Message") = vbYes Then
'разрешаем кнопку соединения
cmdConnect.Enabled = True
'запрещаем кнопку дисконнекта
Command2.Enabled = False
'закрываем соединение
tcpClient.Close
MsgBox "Disconnected", vbExclamation, "Message"
End If
End Sub
 
'если нажата кнопка Enter происходит отправка сообщения
Private Sub mess_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
If mess.Text <> "" Then
On Error GoTo ks1
tcpClient.SendData mess.Text
List1.AddItem "Me: " + mess.Text
List1.ListIndex = List1.ListCount - 1
mess.Text = ""
Exit Sub
ks1:
mess.Text = ""
MsgBox "You aren't connected to server!", 16, "Error"
End If
End If
End Sub
 
'если пришло сообщение
Private Sub tcpClient_DataArrival(ByVal bytesTotal As Long)
    Dim strData As String
    'принимаем сообщение
    tcpClient.GetData strData
    List1.AddItem "Interlocutor: " + strData
    'останавливаем проигрывание (вдруг звук играл)
    Call mciExecute("stop msg.mp3")
    'начинаем проигрывать звук
    Call mciExecute("play msg.mp3")
    'автоскроллинг
    List1.ListIndex = List1.ListCount - 1
End Sub
 
'принимаем сообщение от второго winsock
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim dat As String
Winsock1.GetData dat
nam2 = dat
End Sub
При отправке со второго winsock происходит ошибка
http://waskes.ucoz.ru/error_winsock.png
Сейчас напишу код программы-сервера

Добавлено через 6 минут
код сервера:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
 
'кнопка отправки
Private Sub cmdSend_Click()
On Error GoTo ks
tcpServer.SendData mess.Text
List1.AddItem "Me: " + mess.Text
List1.ListIndex = List1.ListCount - 1
mess.Text = ""
Exit Sub
ks:
mess.Text = ""
MsgBox "You aren't connected to client!", 16, "Error"
End Sub
 
'кнопка выхода
Private Sub Command1_Click()
If MsgBox("Do you wish exit?", vbExclamation + vbYesNo, "Message") = vbYes Then End
End Sub
 
'слушаю порты 1001 и 1000
Private Sub Form_Load()
tcpServer.LocalPort = 1001
tcpServer.Listen
Winsock1.LocalPort = 1000
Winsock1.Listen
End Sub
 
Private Sub mess_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
If mess.Text <> "" Then
On Error GoTo ks1
tcpServer.SendData mess.Text
List1.AddItem "Me: " + mess.Text
mess.Text = ""
List1.ListIndex = List1.ListCount - 1
Exit Sub
ks1:
mess.Text = ""
MsgBox "You aren't connected to client!", 16, "Error"
End If
End If
End Sub
 
'когда к серверу хотят подсоединится, смотрим, открыто ли соединение, если да, то закрываем его
Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)
If tcpServer.State <> sckClosed Then tcpServer.Close
tcpServer.Accept requestID
End Sub
 
Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
tcpServer.GetData strData
List1.AddItem "Interlocutor: " + strData
Call mciExecute("stop msg.mp3")
Call mciExecute("play msg.mp3")
List1.ListIndex = List1.ListCount - 1
End Sub
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38169 / 21104 / 4307
Регистрация: 12.02.2012
Сообщений: 34,693
Записей в блоге: 14
04.08.2012, 20:35
У сервера два winSock-a: tcpServer (это из примера) и winSock1 (это твой). Но события DataArrival и connectionRequest заданы только для tcpServer...
0
0 / 0 / 0
Регистрация: 08.07.2012
Сообщений: 33
04.08.2012, 21:02  [ТС]
блиин, точно! протупил с connectionRequest. большое спасибо!!

Добавлено через 21 минуту
Теперь одна проблемка, не может послать сообщение, сразу после коннекта, как проверить, что соединение уже установлено?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38169 / 21104 / 4307
Регистрация: 12.02.2012
Сообщений: 34,693
Записей в блоге: 14
04.08.2012, 21:07
у winsock-а есть свойство State. Его нужно анализировать. А список всех кодов State можно найти в MSDN
0
0 / 0 / 0
Регистрация: 08.07.2012
Сообщений: 33
04.08.2012, 21:26  [ТС]
точно, 6 - не подключено, 7 - подключено, спасибо за помощь
0
0 / 0 / 0
Регистрация: 08.07.2012
Сообщений: 33
06.08.2012, 19:47  [ТС]
Снова проблема, не получается одновременно с двух winsock'ов отправлять текст
Visual Basic
1
2
3
4
Private Sub Command1_Click()
Winsock1.SendData Text1.Text
Winsock2.SendData Text2.Text
End Sub
Отправляется сообщение только с winsock2, а если поменять команды местами:
Visual Basic
1
2
3
4
Private Sub Command1_Click()
Winsock2.SendData Text2.Text
Winsock1.SendData Text1.Text
End Sub
То отправляется только с winsock1.
Ошибок при отправке нету.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38169 / 21104 / 4307
Регистрация: 12.02.2012
Сообщений: 34,693
Записей в блоге: 14
06.08.2012, 20:39
Попробуй сделать между Send-ами небольшую временную задержку. Интересно, пропадет ли симптом.
0
0 / 0 / 0
Регистрация: 08.07.2012
Сообщений: 33
06.08.2012, 21:24  [ТС]
Не помогает, даже в 5 секунд задержка ничего не дала, а вот разными кнопками отправляется
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38169 / 21104 / 4307
Регистрация: 12.02.2012
Сообщений: 34,693
Записей в блоге: 14
07.08.2012, 09:51
Цитата Сообщение от Dimansel Посмотреть сообщение
а вот разными кнопками отправляется
т.е. два winsock-а работают, но не "от одной кнопки"? Порты разные?
0
0 / 0 / 0
Регистрация: 08.07.2012
Сообщений: 33
07.08.2012, 12:14  [ТС]
да, 1001 и 1002
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38169 / 21104 / 4307
Регистрация: 12.02.2012
Сообщений: 34,693
Записей в блоге: 14
07.08.2012, 16:49
Еще вопрос: сервер отвечает двум клиентам или клиент посылает данные двум серверам?
0
0 / 0 / 0
Регистрация: 08.07.2012
Сообщений: 33
07.08.2012, 17:24  [ТС]
сервер отвечает двум клиентам, вроде бы...
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38169 / 21104 / 4307
Регистрация: 12.02.2012
Сообщений: 34,693
Записей в блоге: 14
07.08.2012, 17:52
Лучший ответ Сообщение было отмечено как решение

Решение

Посмотри мою давнюю пробу. В архиве два проекта - клиент и сервер. Запускаешь сервер и несколько клиентов. На сервере нажимаешь "Пуск", а на клиентах - "Connect". Дальше разберешься. На сервере есть комбо для выбора клиента для связи. В архиве еще и список кодов состояний.

В исходниках, правда, маловато комментариев, но написано должно быть понятно. Ведется лог. В общем - разбирайся.

Главная идея состоит в том, что на сервере используется массив winSock-ов. На каждое соединение создаётся новый. Идея эта не моя (где взял, уже не помню, может и в MSDN).
Вложения
Тип файла: zip Soc-020.zip (28.8 Кб, 24 просмотров)
4
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.08.2012, 17:52
Помогаю со студенческими работами здесь

Как связать два cpp файла в одном проекте (visual studio 2010)
Есть два программы: одна создает файл.txt, вторая читает из него данные и выводит на экран. создает файл #include &lt;iostream&gt; ...

Как сделать, чтобы два проекта с разной кодировкой работали в одном объединённом проекте?
Добрый день подскажите есть два проекта в одном стоит многобайтовая кодировка в другом юникод, по отдельности все нормально компилируется...

Можно ли в одном проекте использовать несколько фреймворков
Можно ли, чтобы часть проекта работала на одном фреймворке, а другая часть - на другом? Извиняюсь за совсем &quot;чайниковый&quot;...

Можно ли в одном проекте использовать разные языки программирования
Интересует можно ли в одном проекте использовать разные языки программирования?

Может ли быть два виджета в одном проекте где у каждого будет своя активити настроек?
Попытался так сделать, все везде написал и в provider и в manifest, но все равно при добавлении второго виджета вылетает активити первого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru