Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Работа С Сокетами(winsock) Добавлено: 14.11.02 18:48  

Автор вопроса:   j3d1 | ICQ: 8370005 

<--Привет Юзеру Который Это Читает-->

Как на вб можно работать с сокетами?

например на Ц++ есть инклуд winsock2.h помойму.

Если аналоги ентого на вб!

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 Неясов_Андрей



ICQ: 674522 

Вопросов: 17
Ответов: 21
 Web-сайт: fans.saturn-fc.ru
 Профиль | | #1
Добавлено: 14.11.02 18:54
Добавь ActiveX WinSock и будешь работать с сокетами !!!

Ответить

Номер ответа: 2
Автор ответа:
  j3d1



ICQ: 8370005 

Вопросов: 34
Ответов: 466
 Профиль | | #2 Добавлено: 14.11.02 18:57

Ага! Думаешь не пробывал. Как ты винсаком привяжешь винсак к порту, командой Bind да, хера, не пашет!

 

Но всё равно пасибо!

Ответить

Номер ответа: 3
Автор ответа:
 paul_sn



Вопросов: 16
Ответов: 164
 Web-сайт: sergeyev.zzn.com
 Профиль | | #3
Добавлено: 14.11.02 19:39

Вот кусочек кода по использованию Winsock в VB6.0

Option Explicit

Private Const WSK_LOCAL_PORT = 12345
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

Private Sub Form_Load()
    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()

End Sub


Private Sub mnuFile_Click()

End Sub


Private Sub mnuFileExit_Click()
    'End the application
    Unload Me
End Sub

 

Private Sub stsStatus_PanelClick(ByVal Panel As ComctlLib.Panel)

End Sub


Private Sub tmrTimer_Timer()
    'Update the status bar
    UpdateStatus
End Sub

Private Sub wsk_Close(Index As Integer)
    'Update the status bar
    UpdateStatus
End Sub

Private Sub wsk_Connect(Index As Integer)
    '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

Private Sub wsk_DataArrival(Index As Integer, ByVal bytesTotal As Long)
    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

<--Привет JEDI, который это написал:)-->

Раз ты шаришь в Цпп, значит лови код для продвинутых. Я им сам неоднократно пользовался. Очень толково. Тут, короче, показано, как юзать ТиСиПи/АйПи без winsock.ocx. Все работает напрямую с либрой "winsock.dll".

ЗЫ: Хотя не мойму, что у тебя за трабла с байндом...

Ответить

Номер ответа: 6
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #6 Добавлено: 15.11.02 10:06

Эээээ... УРЛу забыл:) Бывает ведь...:)

http://www.fortunecity.com/skyscraper/bit/965/vbarticle/vbinternet/tcpwithwinsock.html

Ответить

Номер ответа: 7
Автор ответа:
  j3d1



ICQ: 8370005 

Вопросов: 34
Ответов: 466
 Профиль | | #7 Добавлено: 15.11.02 17:45
Юзер, втом то и дело на си и я знаю как работать, а вот как на вб?

Ответить

Номер ответа: 8
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #8
Добавлено: 17.11.02 21:01

Честно говоря смутно предстовляю о чём вы тут говорите, но на всякий случай держи.

 

Получить содержимое Web-страницы, используя WinInet API
Все просто: задаете 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

Private Function OpenURL(ByVal sUrl As String) As String
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

Private Sub Command1_Click()
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-сайт: www.livejournal.com/users/darxeth_digital
 Профиль | | #10
Добавлено: 18.11.02 20:30

Работать с 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 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам