VB 如何用:socket 发送数据

公司要做一个接口用VB调用socket发送:类似:szxVersion=**&szxOid=**&szxSign=**&....的数据,应该如何做呢?
没用过这东西,实在让我为难了,有没有朋友能帮我写一个简单的源程序,小弟先谢了!

1、首先看控件区有无串口控件,表明串口控件并未被启用,选择工程→部件→Micosoft comm Control6.0选项,点击应用,即可添加串口控件。

2、绘制两个text控件用于存储串口需要收发的数据。一个button控件用于发送指令,添加串口控件。

3、编写程序:    Private Sub Command1_Click() MSComm1.Output = Text2.Text ‘发送数据End Sub Private Sub Form_Load()。

4、串口数据的收发都正常。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-10-07

在VB6中利用Winsock实现数据的发送和接收。下面的代码实现了两个程序:发送端程序和接收端程序,这两个程序实现以下功能:

    Socket通信采用UDP协议

    发送端程序向接收端程序发送字符串数据

    接收端接收到数据后在窗口显示数据

一、接收端程序

(1)新建一个VB6工程

(2)添加Winsock控件。工具箱单击鼠标右键调出菜单:部件-->控件-->Winsock

(3)在Form1上布置一个TextBox和一个Winsock控件

(4)Form1窗体代码

Option Explicit

Private Sub Form_Load()
    '初始化Socket
    With Winsock1
        '采用UDP协议
        .Protocol =sckUDPProtocol
        '本机端口
        .LocalPort = 8000
        '打开Socket
        .Bind
    End With
    Text1.Text = ""
    Me.Caption = "UDP接收端程序"
End Sub

Private Sub Form_Unload(Cancel As Integer)
    '关闭窗口时先关闭socket
    Winsock1.Close
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    '接收数据
    Dim strData As String
    Winsock1.GetData strData, vbString
    '将接收的显示在textBox1
    Text1.Text = Text1.Text + strData + vbCrLf
End Sub

二、发送端程序

(1)新建一个VB6工程

(2)添加Winsock控件

(3)在Form1上布置一个TextBox,一个Winsock和一个Command

(4)Form1窗体代码

Option Explicit

Private Sub Command1_Click()
    '发送
    Winsock1.SendData Text1.Text
End Sub

Private Sub Form_Load()
    With Winsock1
        ' 采用UDP协议
        .Protocol = sckUDPProtocol
        '192.168.216.128是接收端程序所在计算机的IP地址
        .RemoteHost = "192.168.216.128"
        '接收端程序所使用的端口
        .RemotePort = 8000
        '打开Socket
        .Bind
    End With
    Text1.Text = ""
    Command1.Caption = "发送"
    Me.Caption = "UDP发送端程序"
End Sub

Private Sub Form_Unload(Cancel As Integer)
    '窗口关闭时,先关闭Winsock1
    Winsock1.Close
End Sub

三、运行结果

启动UDP接收端程序

启动UDP发送端程序

发送数据

接收数据

第2个回答  推荐于2018-02-27
用VB5 Winsock控件创建TCP/IP通讯程序

随着Windows 95中文版和Windows NT Server 4.0中文版的流行, Microsoft公司推出了相应平台上的开发软件: Visual Basic 5.0 中文企业 版。它为Windows环境下的网络开发提供了强大的工具,Winsock控件就是其中之一。

Winsock控件建立在TCP、UDP协议的基础上,完成与远程计算机的通信。即使对TCP/IP不太熟悉的用户,使用该控件也可以在十几分钟内创建一个简单的客户机/服务器程序。下面我们对Winsock控件的事件、方法、属性按其在程序中出现的顺序分别作详细的介绍,以便更好地理解程序源代码。

服务器程序的实现过程是:

(1)服务器程序必须设置好LocalPort属性,作为侦听端口,该值为一个整数(只要是一个其它TCP/IP应用程序没有使用过的值即可)。

(2)使用Listen方法进入侦听状态,等待客户机程序的连接请求。

(3)客户机程序发出连接请求,使服务器程序产生ConnectionRequest事件,该事件得到一个参数requestID。

(4)服务器程序用Accept方法接受客户机程序的requestID请求。这样,服务器程序就可以用SendData方法发送数据了。Accept方法必须用上一步得到的requestID作为其参数。

(5)当服务器程序接收到数据时,产生DataArrival事件,参数BytesTotal包含接收到的数据字节数。在该事件中,可以用GetData方法接收数据。

(6)如果接受到Close事件,则用Close方法关闭TCP/IP连接。

客户机程序的实现过程是:

(1) 客户程序设置Remotehost属性,以便指定运行服务器程序的主机 名,该字符串可在“控制面板|网络|标识|计算机名”中查到。

(2) 设置RemotePort属性,以便指定服务器程序的侦听端口。

(3)使用Connect方法,向服务器提出连接请求。

(4)服务器接受客户机程序的请求,客户机程序产生Connect事件,就可以用SendData方法发送数据了。

(5)当客户机程序接收到数据时,产生DataArrival事件,参数BytesTotal包含接收到的数据字节数。在该事件中,可以用GetData方法接收数据。

(6)如果接受到Close事件,则用Close方法关闭连接。

Winsock控件还有两个重要的属性,即Protocol和State。Protocol设定使用的协议是TCP还是UDP:取值sckTCPProtocol表示TCP, 取值sckUDPProtocol则表示UDP。因为Winsock控件的缺省设置是sckTCPProtocol,所以程序中并没有使用Protocol属性。State属性反映的是当前TCP/IP的连接状态,取值如表1所示。

表1 Winsock控件的State属性及其描述

常数 值 描述

sckClosed 0 缺省值,关闭。

SckOpen 1 打开。

SckListening 2 侦听

sckConnectionPending 3 连接挂起

sckResolvingHost 4 识别主机。

sckHostResolved 5 已识别主机

sckConnecting 6 正在连接。

sckConnected 7 已连接。

sckClosing 8 同级人员正在关闭连接。

sckError 9 错误。

先在一台计算机上运行服务器程序,此时窗口上只有一个“退出”按钮。 再在另一台计算机上运行客户机程序,在“连接”按钮右边的文本框中输入服务器 的主机名后单击“连接”按钮。如果连接成功,则服务器和客户机程序窗口都会出现两个文本框。这时,两端都可以在上面的文本框中输入文字,这些文字会立即在下面的文本框中出现。

服务器程序使用的控件如下:

(1)Command1:退出按钮;

(2)textsend:发送数据文本框;

(3)Winsockserver: 服务器Winsock;

(4)textget :接收数据文本框。

服务器程序的界面如图所示。

服务器程序的源代码如下:

Private Sub Command1_Click()

End

End Sub

Private Sub Form_Load()

textsend.Visible = False

textget.Visible = False

Winsockserver.LocalPort = 1001

Winsockserver.Listen

End Sub

Private Sub textsend_Change()

Winsockserver.SendData textsend.Text

End Sub

Private Sub Winsockserver_Close()

Winsockserver.Close

End

End Sub

Private Sub Winsockserver_ConnectionRequest(ByVal requestID As Long)

textsend.Visible = True

textget.Visible = True

If Winsockserver.State <> sckClosed Then Winsockserver.Close

Winsockserver.Accept requestID

End Sub

Private Sub Winsockserver_DataArrival(ByVal bytesTotal As Long)

Dim tmpstr As String

Winsockserver.GetData tmpstr

textget.Text = tmpstr

End Sub

客户机程序使用的控件如下:

(1)Command1:退出按钮;

(2)Command2:连接按钮;

(3)Winsockclient:客户Winsock;

(4)Text1:主机名文本框;

(5)Textsend:发送数据文本框;

(6)Textget:接收数据文本框; 客户机程序的界面如图所示。

客户机程序的源代码如下:

Private Sub Command1_Click()

End

End Sub

Private Sub Command2_Click()

Winsockclient.Connect

End Sub

Private Sub Form_Load()

textsend.Visible = False

textget.Visible = False

Winsockclient.RemotePort = 1001

Winsockclient.RemoteHost = "sccdsz"

End Sub

Private Sub Text1_Change()

Winsockclient.RemoteHost = Text1.Text

End Sub

Private Sub textsend_Change()

Winsockclient.SendData textsend.Text

End Sub

Private Sub Winsockclient_Close()

Winsockclient.Close

End

End Sub

Private Sub winsockclient_Connect()

textsend.Visible = True

textget.Visible = True

Command2.Visible = False

End Sub

Private Sub winsockclient_DataArrival(ByVal bytesTotal As Long)

Dim tmpstr As String

Winsockclient.GetData tmpstr

textget.Text = tmpstr

End Sub本回答被提问者和网友采纳