快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

一个WINSOCK组件

我自己写了一个Winsock组件,很简朴,将带发送的报文发给指定IP的指定端口,并返回应答报文。技术粗糙, 请大家指教。附源码如下:

-------------------------------------

VERSION 1.0 CLASS
BEGIN
MultiUse = -1 \\\'True
Persistable = 0 \\\'NotPersistable
DataBindingBehavior = 0 \\\'vbNone
DataSourceBehavior = 0 \\\'vbNone
MTSTransactionMode = 0 \\\'NotAnMTSObject
END
Attribute VB_Name = "clsWinSockEm"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
\\\'******************************************************************************
\\\'
\\\' clsWinSockEm.CLS
\\\' 嵌入式WinSocket类
\\\' 输入:服务器IP、服务器Port、待发送报文
\\\' 输出:接收报文
\\\'
\\\'******************************************************************************

Option Explicit

\\\'******************************************************************************

Const RECV_TIME_OUT = 60 \\\' 接收超时
Const SEND_TIME_OUT = 60 \\\' 发送超时
Const CONN_TIME_OUT = 120 \\\' 连接超时
Const RECV_MAX_LEN = 2048 \\\' 接收报文最大数

\\\'******************************************************************************

Private WithEvents wskEm As MSWinsockLib.Winsock \\\' WinSock Control
Attribute wskEm.VB_VarHelpID = -1
Private mstrServerIP As String \\\' 远程服务器IP
Private mintServerPort As Integer \\\' 远程服务器端口
Private mstrTextToSend As String \\\' 发送报文
Private mstrTextReceived As String \\\' 接收报文
Private bConnected As Boolean \\\' 连接标志

\\\'******************************************************************************

\\\' 初始化
Public Sub Init(strServerIP As String, intServerPort As Integer)
mstrServerIP = strServerIP
mintServerPort = intServerPort
mstrTextToSend = ""
mstrTextReceived = ""
bConnected = False
End Sub

\\\' 返回报文
Public Function ReturnText(strTextToSend As String) As String
Dim dtStart As Date
dtStart = Now

Set wskEm = New MSWinsockLib.Winsock

\\\' 获取发送字符串
mstrTextToSend = strTextToSend
mstrTextToSend = mstrTextToSend & Chr(0)

ConnectServer
SendText

\\\' 接收报文超时控制
Do Until Not (mstrTextReceived = "")
DoEvents
If DateDiff("s", dtStart, Now) > RECV_TIME_OUT Then
Err.Raise vbObjectError, "Socket错误", "通讯超时"
End If
Loop

wskEm.Close
Set wskEm = Nothing

ReturnText = mstrTextReceived
End Function

\\\' 连接服务器
Private Sub ConnectServer()
Dim dtStart As Date

dtStart = Now()

wskEm.RemoteHost = mstrServerIP
wskEm.RemotePort = mintServerPort
wskEm.Connect

Do Until bConnected
DoEvents
If DateDiff("s", dtStart, Now) > CONN_TIME_OUT Then
Err.Raise vbObjectError, "Socket错误", "连接超时"
End If
Loop
End Sub

\\\' 发送报文
Private Sub SendText()
Dim dtStart As Date

dtStart = Now()

wskEm.SendData mstrTextToSend \\\' 发送报文

\\\' Do Until wskEm.State = sckClosed
\\\' DoEvents
\\\' If DateDiff("s", dtStart, Now) > 5 Then
\\\' Err.Raise vbObjectError, "Socket错误", "发送哀求超时"
\\\' End If
\\\' Loop
End Sub

\\\' WinSock连接事件
Private Sub wskEm_Connect()
bConnected = True
End Sub

\\\' WinSock数据到达事件
Private Sub wskEm_DataArrival(ByVal bytesTotal As Long)
wskEm.GetData mstrTextReceived, vbString, RECV_MAX_LEN
End Sub
返回类别: 教程
上一教程: ASP 3.0高级编程(十五)
下一教程: 什么是GLOBAL.ASA文件

您可以阅读与"一个WINSOCK组件"相关的教程:
· 作一个可以直接和浏览器进行交互的组件
· 无组件上传文件,一个函数搞定
· 为你的ASP程序制作一个编译组件(下)
· 一个的无组件上传的ASP代码
· 第一个ASP组件:设置服务器日期时间组件
    微笑服务 优质保证 索取样品