如何通过winsock发送自定义数据包
想要用vb写一个发送自定义数据包的东西,就是像nc.exe一样发送自定义数据包的那种!~之前同学写过一个,希望懂vb的发一下源码研究一下。我初学者。就像这个一样就行。...
想要用vb写一个发送自定义数据包的东西,就是像nc.exe一样发送自定义数据包的那种!~之前同学写过一个,希望懂vb的发一下源码研究一下。我初学者。就像这个一样就行。
展开
4个回答
2013-09-05
展开全部
可以直接用winsock发数据包的方法实现
如:
是用winsock控件的udp搞的
Private Sub Form_Load()
Winsock1.Protocol = sckUDPProtocol
Winsock1.RemoteHost = Winsock1.LocalIP
With Winsock1
.RemotePort = 1002 '远程机端口
.Bind 1002 '自己用的端口
End With
End Sub
Private Sub Command1_Click() '设计一个按钮,点击它发送文件“C:/nn.bmp”
Dim s1() As Byte '存放数据的数组
Open App.Path + "\nn.bmp" For Binary As #1
DoEvents
ReDim s1(1 To LOF(1)) '根据文件长度重新定义数组大小
Get #1, , s1()
Close #1
Winsock1.SendData s1() '发送
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim s2() As Byte
Open App.Path + "/hello.bmp" For Binary As #2 '保存为"C:/hello.bmp"
ReDim s2(1 To bytesTotal) '根据发来字节长度重新定义数组大小
Winsock1.GetData s2() ‘获取数据
Put #2, 1, s2()
Close #2
End Sub
说明:(1)
该程序如在一台电脑上运行,则需编两个程序,这两个程序只有端口号的设置不同
若其中第一个可以为:
With Winsock1
.RemotePort = 1002 '远程机端口
.Bind 1003 '自己用的端口
End With
则另一个可以设置为:
With Winsock1
.RemotePort = 1003 '远程机端口
.Bind 1002 '自己用的端口
End With
说明:(2)
这个程序的适用性很小(具体是指每次传输的文件大小不能超过大约7-8KB左右),大文件需要切割后一个包一个包的传,由于小弟技术太差,这个问题至今没搞定,(哎,人世间最大的痛苦莫过如此呀!)
如:
是用winsock控件的udp搞的
Private Sub Form_Load()
Winsock1.Protocol = sckUDPProtocol
Winsock1.RemoteHost = Winsock1.LocalIP
With Winsock1
.RemotePort = 1002 '远程机端口
.Bind 1002 '自己用的端口
End With
End Sub
Private Sub Command1_Click() '设计一个按钮,点击它发送文件“C:/nn.bmp”
Dim s1() As Byte '存放数据的数组
Open App.Path + "\nn.bmp" For Binary As #1
DoEvents
ReDim s1(1 To LOF(1)) '根据文件长度重新定义数组大小
Get #1, , s1()
Close #1
Winsock1.SendData s1() '发送
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim s2() As Byte
Open App.Path + "/hello.bmp" For Binary As #2 '保存为"C:/hello.bmp"
ReDim s2(1 To bytesTotal) '根据发来字节长度重新定义数组大小
Winsock1.GetData s2() ‘获取数据
Put #2, 1, s2()
Close #2
End Sub
说明:(1)
该程序如在一台电脑上运行,则需编两个程序,这两个程序只有端口号的设置不同
若其中第一个可以为:
With Winsock1
.RemotePort = 1002 '远程机端口
.Bind 1003 '自己用的端口
End With
则另一个可以设置为:
With Winsock1
.RemotePort = 1003 '远程机端口
.Bind 1002 '自己用的端口
End With
说明:(2)
这个程序的适用性很小(具体是指每次传输的文件大小不能超过大约7-8KB左右),大文件需要切割后一个包一个包的传,由于小弟技术太差,这个问题至今没搞定,(哎,人世间最大的痛苦莫过如此呀!)
2013-09-05
展开全部
- -..我就是传说中的同学
用Winsock,先Connect,在连接成功的事件中Send,在SendComplete事件中Close,然后接着Connect,循环就是了。
用Winsock,先Connect,在连接成功的事件中Send,在SendComplete事件中Close,然后接着Connect,循环就是了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-05
展开全部
不晓得你用的是什么控件。
我找找我写的代码!!! 不过是全WINDOWS SDK写的,没有用控件,你参考参考。
var
Header : Thdr;
begin
case m_nReqCur of
REQROOT :
begin
Header.MsgType := 0;
ErrCode := send(sAccept,Header,SizeOf(Header),0);
if ErrCode = SOCKET_ERROR then
begin
Result := False;
Exit;
end;
m_nReqCur := REQNON;
Thdr就是我自定义的类型
我找找我写的代码!!! 不过是全WINDOWS SDK写的,没有用控件,你参考参考。
var
Header : Thdr;
begin
case m_nReqCur of
REQROOT :
begin
Header.MsgType := 0;
ErrCode := send(sAccept,Header,SizeOf(Header),0);
if ErrCode = SOCKET_ERROR then
begin
Result := False;
Exit;
end;
m_nReqCur := REQNON;
Thdr就是我自定义的类型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-05
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询