SeT писал(а):Мне не WinAPI. Мне чтобы через ws2_32.dll b через winsock.dll
SeT писал(а):Бяка, твой пример на контроле. На тему внимательнее нужно смотреть
Public Declare Function WSAStartupInfo Lib "WSOCK32" Alias "WSAStartup" (ByVal wVersionRequested As Integer, lpWSADATA As WSADataInfo) As Long
Public Declare Function WSACleanup Lib "WSOCK32" () As Long
Public Declare Function WSAGetLastError Lib "WSOCK32" () As Long
Public Declare Function WSAStartup Lib "WSOCK32" (ByVal wVersionRequired As Long, lpWSADATA As WSAData) As Long
Public Declare Function gethostname Lib "WSOCK32" (ByVal szHost As String, ByVal dwHostLen As Long) As Long
Public Declare Function gethostbyname Lib "WSOCK32" (ByVal szHost As String) As Long
.....
Мне нужно, чтобы ВООБЩЕ без контрола. Чисто dll.
Мне не WinAPI. Мне чтобы через ws2_32.dll b через winsock.dll
Ну дайте пожалуйста простенький исходник клиент-серверного соединения
DaSharm_nn писал(а):Мне нужно, чтобы ВООБЩЕ без контрола. Чисто dll.
ну, знаешь, ты сначала разберись, какая ДЛЛ тебе нужна.
Если юзать стандартные - не будет "событий". Думаю, тебе это не подойдет. Можно их реализовать другими способами, каллбеками и т. п. Но, думаю, ты это делать не собираешься.
Активикс ДЛЛ - вот тут можно реализовать "события", но ведь тебе компоненты лишние не подходят, да?
Ув. тов. DaSharm знает, что обычные классы в обычных Standard EXE умеют генерировать события?
SeT писал(а):Без OCX потому что для него регистрация нужна.
Public Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Public Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Public Function DLLOCX(ByVal hWnd As Long, ByVal Path As String, ByVal Register As Boolean) As Boolean
On Error Resume Next
Dim LB As Long, PA As Long
LB = LoadLibrary(Path)
If LB = 0 Then Exit Function
If Register = True Then
PA = GetProcAddress(LB, "DllRegisterServer")
Else
PA = GetProcAddress(LB, "DllUnregisterServer")
End If
If PA = 0 Then GoTo 0
Call CallWindowProc(PA, hWnd, ByVal 0&, ByVal 0&, ByVal 0&)
DLLOCX = True
0
Call FreeLibrary(LB)
End Function
DaSharm_nn писал(а):Я ВЕДЬ ГОВОРЮ, МОЙ КОМПОНЕНТ С ИСПОЛНЕНИЕМ USER CONTROL!
DaSharm_nn писал(а):Ещё есть какие-то вопросы?
DaSharm_nn писал(а):ну, знаешь, ты сначала разберись, какая ДЛЛ тебе нужна.
Если юзать стандартные - не будет "событий". Думаю, тебе это не подойдет. Можно их реализовать другими способами, каллбеками и т. п. Но, думаю, ты это делать не собираешься.
Активикс ДЛЛ - вот тут можно реализовать "события", но ведь тебе компоненты лишние не подходят, да
Из этого пассажа ясно видно, что ты утверждаешь, будто события классов можно сделать, если поместить классы в ActiveX dll.
а именно прокомментируй смысл
Мне нужно, чтобы ВООБЩЕ без контрола. Чисто dll.
DaSharm_nn писал(а):Ув. тов. DaSharm знает, что обычные классы в обычных Standard EXE умеют генерировать события?
Ув. тов. DaSharm знает намного больше. Чё ты мне о классах парить собрался? Я ВЕДЬ ГОВОРЮ, МОЙ КОМПОНЕНТ С ИСПОЛНЕНИЕМ USER CONTROL!
DaSharm_nn писал(а):Если юзать стандартные - не будет "событий". ... Активикс ДЛЛ - вот тут можно реализовать "события", но ведь тебе компоненты лишние не подходят, да?
DaSharm_nn писал(а):Почему? ну давай помысли, если бы я делал асинхронный сокетный движок в классе, где бы я взял окно? хм... Создать и сабкласить, да?
DaSharm_nn писал(а):Ещё есть какие-то вопросы?
DaSharm_nn писал(а):SeT написал:Мне нужно, чтобы ВООБЩЕ без контрола. Чисто dll.
Вот я ему и написал о ДЛЛ, ведь он не о классах говорил, не так ли?
(WSAEventSelect), ув. тов. DaSharm знает?
Он писал о ws2_32.dll, а не об ActiveX DLL для отлова событий.
рассылка Винсоком оконных сообщений предназначена
DaSharm_nn писал(а):(WSAEventSelect), ув. тов. DaSharm знает?
А ты блин знаешь что это работает в многопоточных приложениях??? А сколько потоков в ВБ, мудрец?
DaSharm_nn писал(а):рассылка Винсоком оконных сообщений предназначена
Ты это из учебника "для чайников" вычитал? Кто тебе такое сказал???
Asynchronous Winsock I/O (WSAAsyncSelect()) isn't the most efficient I/O strategy, but it's not the least efficient, either. It's a fine way to go in a program that deals with low volumes of data. As the volume of data goes up, the overhead becomes more significant.
...
The main problem with doing this is that many servers don't have a user interface, and thus no message loop. A server without a UI using asynchronous sockets would have to create an invisible window solely to support its asynchronous sockets. If your program already has a user interface, though, asynchronous sockets can be the least painful way to add a network server feature to it.
...
Another reasonable choice for handling a moderate number of connections is event objects. These are very efficient in and of themselves.
DaSharm_nn писал(а):Это есть стандартный подход с переходом на асинхронные сокеты, ты меня учить будешь? Сперва сделай то, что я, вот тогда и поговорим, или я чего-то недопонял? Илы ты у нас в почете? ты вообще думаешь что ты пишешь?
Сейчас этот форум просматривают: Google-бот и гости: 116