vb Winsock发送问题 20
本机电脑有多个网卡,每个网卡有多个IP,现在想用VBWinsock向其他机器发送数据,如何才能用本机中指定网卡的IP进行发送呢?...
本机电脑有多个网卡,每个网卡有多个IP,现在想用VB Winsock向其他机器发送数据,如何才能用本机中指定网卡的IP进行发送呢?
展开
展开全部
这里有个例子,你看看有没有什么启发。
Private Declare Function CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) As BooleanDim bytData() As BytePrivate Sub Command1_Click() Winsock1.RemoteHost = Text1.Text Dim arr() As Byte Dim i As New PropertyBag i.WriteProperty "image", Picture1.Picture ReDim arr(1 To LenB(i.Contents)) arr = i.Contents If UBound(arr) <= 8192 Then '如果要发送的文件小于数据块大小,直接发送 Winsock1.SendData arr '发送数据 Exit Sub End IfEnd SubPrivate Sub Form_Load() With Winsock1 '信息发送与接收 .Protocol = sckUDPProtocol '使用UDP协议 .RemotePort = 9001 '要连接的端口 .LocalPort = 9001 .Bind '绑定到本地的端口上 End WithEnd SubPrivate Sub Form_Unload(Cancel As Integer) Erase bytDataEnd SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim arr() As Byte ReDim arr(1 To bytesTotal) Winsock1.GetData arr ReDim Preserve bytData(1 To bytesTotal) CopyMemory bytData(1), arr(0), bytesTotal Dim i As New PropertyBag i.Contents = bytData Picture2.Picture = i.ReadProperty("image")End Sub
Private Declare Function CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) As BooleanDim bytData() As BytePrivate Sub Command1_Click() Winsock1.RemoteHost = Text1.Text Dim arr() As Byte Dim i As New PropertyBag i.WriteProperty "image", Picture1.Picture ReDim arr(1 To LenB(i.Contents)) arr = i.Contents If UBound(arr) <= 8192 Then '如果要发送的文件小于数据块大小,直接发送 Winsock1.SendData arr '发送数据 Exit Sub End IfEnd SubPrivate Sub Form_Load() With Winsock1 '信息发送与接收 .Protocol = sckUDPProtocol '使用UDP协议 .RemotePort = 9001 '要连接的端口 .LocalPort = 9001 .Bind '绑定到本地的端口上 End WithEnd SubPrivate Sub Form_Unload(Cancel As Integer) Erase bytDataEnd SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim arr() As Byte ReDim arr(1 To bytesTotal) Winsock1.GetData arr ReDim Preserve bytData(1 To bytesTotal) CopyMemory bytData(1), arr(0), bytesTotal Dim i As New PropertyBag i.Contents = bytData Picture2.Picture = i.ReadProperty("image")End Sub
追问
这代码没有指定使用什么网卡或IP的功能。谢谢你的热心回答。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Winsock TCP方式发送数据,需要指定对方的IP,和发送的端口,无法指定本机的网卡和IP,而且也不需要指定本机的网卡和IP,因为建立TCP连接属于系统底层的事情,系统会自动寻找与对方IP匹配的本机网卡。
更多追问追答
追问
使用的是UDP协议,测试发送是能成功的,因为是多网卡的原因 LacalIP不能使用我所指定的IP,如果你熟悉这个的话请给点思路。
追答
UDP属于广播协议,会向所有IP地址发送数据,没必要指定IP
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询