今天上午学习了,winsock的使用的过程,现将学习的收获总结如下:
Winsock的属性:
1 Localport:设定本机的端口号。端口号从0~65536,其中1024一下一般为专用的端口,如21为ftp默认端口。80为http默认端口。
2 protocol :选择的协议,包括tcp和udp协议,采用tcp协议需要在数据传输之前建立连接,而采用udp形式在进行数据传输之前不需要建立通讯连接。
3 remotehost 用来表示远程主机。可以直接用ip表示,也可以用主机名“pop。sina。Com.cn”
4 remoteport 属性用来表示你需要连接的主机的端口号。
5 localhostname 属性 Localhost用来返回本地主机的名字
6 localip 返回本地主机的ip
7 state 属性 返回我winsock的连接的状态
Winsock事件的方法
1. Accept 将产生连接请求事件时调用该方法。
2. Close 系方法用来关闭连接,当一方调用此方法,另一方状态为零
3. Connect 用来连接远程服务器。
4. Listen 用来监听客户机的连接的请求
5. Getdata 用来获取远程主机发来的数据
6. Senddata 用来向远程主机发送数据
Winsock 控件的事件
1. close 一方调用close方法时另一方产生close 事件
2. connection request 事件 当客户端采用connect方法向远程服务器发出连接请求时,服务器端将产生connectrequest ,在此可以调用 accept 方法
3. dataarrival 当数据到达时将产生 dataarrival事件
4.
一下是今天的vb 操作实例:
//MODULE
Public Function GetWinSockState(tcpsock As Winsock) As String
Dim strTmp As String
On Error Resume Next
Select Case tcpsock.State
Case 0
strTmp = "Closed"
Case 1
strTmp = "Open"
Case 2
strTmp = "Listening"
Case 3
strTmp = "Connection pending"
Case 4
strTmp = "Resolving host"
Case 5
strTmp = "Host resolved"
Case 6
strTmp = "Connecting"
Case 7
strTmp = "Connected"
Case 8
strTmp = "Peer is closing the connection"
Case 9
strTmp = "Error"
End Select
GetWinSockState = strTmp
End Function
//FORM1 程序的代码
Private Sub Command3_Click()
Winsock1.SendData "123 "
End Sub
Private Sub Form_Load()
End Sub
Private Sub winsock2_connectionrequest(ByVal requestid As Long)
With Winsock2
If .State <> sckClosed Then .Close
.Accept requestid
End With
MsgBox "connect request"
End Sub
Private Sub winsock2_dataarrival(ByVal bytestotal As Long)
Dim strinfo As String
Winsock2.GetData strinfo
If strinfo <> Null Then
MsgBox "收到消息"
End If
Winsock2.SendData "hello"
End Sub
Private Sub Command1_Click()
With Winsock1
.Close
.Protocol = sckTCPProtocol
.RemoteHost = "127.0.0.1"
.RemotePort = 8000
.Connect
MsgBox GetWinSockState(Winsock1)
End With
End Sub
Private Sub Command4_Click()
With Winsock2
.Close
.Protocol = sckTCPProtocol
.LocalPort = 8000
.Listen
MsgBox GetWinSockState(Winsock2)
End With
End Sub