Страница: 1 |
<--Привет Юзеру Который Это Читает--> Как на вб можно работать с сокетами? например на Ц++ есть инклуд winsock2.h помойму. Если аналоги ентого на вб!
Ага! Думаешь не пробывал. Как ты винсаком привяжешь винсак к порту, командой Bind да, хера, не пашет! Но всё равно пасибо! Вот кусочек кода по использованию Winsock в VB6.0 Option Explicit Private Const WSK_LOCAL_PORT = 12345 Private Sub Form_Load() End Sub End Sub Private Sub stsStatus_PanelClick(ByVal Panel As ComctlLib.Panel) End Sub Private Sub wsk_Close(Index As Integer) Private Sub wsk_Connect(Index As Integer) Private Sub wsk_DataArrival(Index As Integer, ByVal bytesTotal As Long) Это не то, это я и сам могу нацарапать(если сильно приспичит). Это как я понял куски много канального чата? Но всё равно Пасиба! <--Привет JEDI, который это написал--> Раз ты шаришь в Цпп, значит лови код для продвинутых. Я им сам неоднократно пользовался. Очень толково. Тут, короче, показано, как юзать ТиСиПи/АйПи без winsock.ocx. Все работает напрямую с либрой "winsock.dll". ЗЫ: Хотя не мойму, что у тебя за трабла с байндом... Эээээ... УРЛу забыл Бывает ведь... http://www.fortunecity.com/skyscraper/bit/965/vbarticle/vbinternet/tcpwithwinsock.html Честно говоря смутно предстовляю о чём вы тут говорите, но на всякий случай держи. Получить содержимое Web-страницы, используя WinInet API Private Function OpenURL(ByVal sUrl As String) As String Private Sub Command1_Click() Не, это нето! Но Пасибо, и Юзеру тоже! Работать с Winsock.Ocx крайне просто. Фича в том, что Bind нужен для UDP. А для TCP/IP: Private Sub wnsConn_Close(Index As Integer) wnsConn(Index).Close '-- my code End Sub Private Sub wnsConn_Connect(Index As Integer) '-- my code End Sub Private Sub wnsConn_ConnectionRequest(Index As Integer, ByVal requestID As Long) '-- my code wnsConn(Index).Close wnsConn(Index).Accept requestID '-- my code End Sub Private Sub wnsConn_DataArrival(Index As Integer, ByVal bytesTotal As Long) Dim Data As String wnsConn(Index).GetData Data '-- my code End Sub Private Sub wnsConn_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean) '-- my code wnsConn(Index).Close Status(Index) = ST_UNCONNECTED End Sub Public Sub tcpConnect(Optional ByVal ConNum As Long = -2) ConNum = IIf(ConNum = -2, CurCons, ConNum) With frmMain.wnsConn(ConNum) .RemotePort = GetPort(Ports(ConNum)) '.LocalPort = GetPort(Ports(ConNum)) Say BotName, "Connecting to " & RemoteHost(ConNum) & " ...", ConNum .Connect RemoteHost(ConNum) Status(ConNum) = ST_CONNECTING1 End With End Sub Public Sub tcpSendData(ByVal Data As String, Optional ByVal ConNum As Long = -2) ConNum = IIf(ConNum = -2, CurCons, ConNum) frmMain.wnsConn(ConNum).SendData Data End Sub Public Sub tcpClose(Optional ByVal ConNum As Long = -2) ConNum = IIf(ConNum = -2, CurCons, ConNum) frmMain.wnsConn(ConNum).Close End Sub Public Sub tcpConnWait(Optional ByVal ConNum As Long = -2) ConNum = IIf(ConNum = -2, CurCons, ConNum) With frmMain.wnsConn(ConNum) .LocalPort = GetPort(Ports(ConNum)) '.RemotePort = GetPort(Ports(ConNum)) .Listen Say BotName, "Waiting for connection ...", ConNum Status(ConNum) = ST_WAITING End With End Sub Под конец лень стало вырезать свой код. Страница: 1 |
Вопрос: Работа С Сокетами(winsock)
Добавлено: 14.11.02 18:48
Автор вопроса: j3d1 | ICQ: 8370005
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
Неясов_Андрей
ICQ: 674522
Вопросов: 17
Ответов: 21
Web-сайт:
Профиль | | #1
Добавлено: 14.11.02 18:54
Добавь ActiveX WinSock и будешь работать с сокетами !!!
Номер ответа: 2
Автор ответа:
j3d1
ICQ: 8370005
Вопросов: 34
Ответов: 466
Профиль | | #2
Добавлено: 14.11.02 18:57
Номер ответа: 3
Автор ответа:
paul_sn
Вопросов: 16
Ответов: 164
Web-сайт:
Профиль | | #3
Добавлено: 14.11.02 19:39
Private Const MAX_SESSIONS = 11
Private Sub UpdateStatus()
Dim i As Integer
Dim actsess As Integer
'Count the number of active sessions
For i = 1 To MAX_SESSIONS
With wsk(i)
If .State = sckConnected Then
'Increment the session count
actsess = actsess + 1
End If
End With
Next
'Refresh the status
With stsStatus
.Panels(1).Text = "Sessions: " & _
Trim$(Str$(actsess))
End With
End Sub
Dim i As Integer
'Configure the winsock receiver
With wsk(0)
.Protocol = sckTCPProtocol
.LocalPort = WSK_LOCAL_PORT
.Listen
End With
'Load 10 more winsocks
For i = 1 To MAX_SESSIONS
Load wsk(i)
wsk(i).Protocol = sckTCPProtocol
wsk(i).LocalPort = WSK_LOCAL_PORT
Next
'Update the status bar
UpdateStatus
End Sub
Private Sub Form_Resize()
'Stretch the message list
If WindowState <> vbMinimized Then
lstMessages.Move 0, _
0, _
ScaleWidth, _
(ScaleHeight - stsStatus.Height)
End If
End Sub
Private Sub lstMessages_Click()
Private Sub mnuFile_Click()
Private Sub mnuFileExit_Click()
'End the application
Unload Me
End Sub
Private Sub tmrTimer_Timer()
'Update the status bar
UpdateStatus
End Sub
'Update the status bar
UpdateStatus
End Sub
'Update the status bar
UpdateStatus
End Sub
Private Sub wsk_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Dim msg As String
Dim i As Integer
'If this is the listening port...
If Index = 0 Then
'Let's find an open session
For i = 1 To MAX_SESSIONS
With wsk(i)
If .State = sckClosed Then
'Connect to session i
.Accept requestID
'Break out of the loop
Exit For
End If
End With
Next
End If
End Sub
Dim msg As String
Dim rc As Integer
Dim i As Integer
'Get the message
wsk(Index).GetData msg, , bytesTotal
'Add it to the list
lstMessages.AddItem msg
'Relay the message back to the other clients
For i = 1 To MAX_SESSIONS
With wsk(i)
If .State = sckConnected Then
'Relay the message back to the
'selected client
.SendData msg
'Wait for the message
'to go out
DoEvents
End If
End With
Next
End Sub
Номер ответа: 4
Автор ответа:
j3d1
ICQ: 8370005
Вопросов: 34
Ответов: 466
Профиль | | #4
Добавлено: 14.11.02 20:53
Номер ответа: 5
Автор ответа:
User Unknown
Вечный Юзер!
ICQ: uu@jabber.cz
Вопросов: 120
Ответов: 3302
Профиль | | #5
Добавлено: 15.11.02 10:05
Номер ответа: 6
Автор ответа:
User Unknown
Вечный Юзер!
ICQ: uu@jabber.cz
Вопросов: 120
Ответов: 3302
Профиль | | #6
Добавлено: 15.11.02 10:06
Номер ответа: 7
Автор ответа:
j3d1
ICQ: 8370005
Вопросов: 34
Ответов: 466
Профиль | | #7
Добавлено: 15.11.02 17:45
Юзер, втом то и дело на си и я знаю как работать, а вот как на вб?
Номер ответа: 8
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #8
Добавлено: 17.11.02 21:01
Все просто: задаете URL любой страницы, и в текстовом окне получаете содержимое этой страницы
Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Private Const INTERNET_OPEN_TYPE_DIRECT = 1
Private Const INTERNET_OPEN_TYPE_PROXY = 3
Private Const scUserAgent = "VB Project"
Private Const INTERNET_FLAG_RELOAD = &H80000000
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hOpen As Long, ByVal sUrl As String, ByVal sHeaders As String, ByVal lLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Dim hOpen As Long
Dim hOpenUrl As Long
Dim bDoLoop As Boolean
Dim bRet As Boolean
Dim sReadBuffer As String * 2048
Dim lNumberOfBytesRead As Long
Dim sBuffer As String
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
bDoLoop = True
While bDoLoop
sReadBuffer = vbNullString
bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
sBuffer = sBuffer & Left$(sReadBuffer, lNumberOfBytesRead)
If Not CBool(lNumberOfBytesRead) Then bDoLoop = False
Wend
If hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl)
If hOpen <> 0 Then InternetCloseHandle (hOpen)
OpenURL = sBuffer
End Function
Text1 = OpenURL("http://vbnet.ru/faq/faq.asp")
End Sub
Номер ответа: 9
Автор ответа:
j3d1
ICQ: 8370005
Вопросов: 34
Ответов: 466
Профиль | | #9
Добавлено: 18.11.02 19:13
Номер ответа: 10
Автор ответа:
Андрей Щёкин [darxeth]
ICQ: 161560107
Вопросов: 9
Ответов: 52
Web-сайт:
Профиль | | #10
Добавлено: 18.11.02 20:30