VB监听端口后.把监听的数据发回发送源
答案:4 悬赏:70 手机版
解决时间 2021-12-01 00:41
- 提问者网友:绫月
- 2021-11-30 08:06
VB监听端口后.把监听的数据发回发送源
最佳答案
- 五星知识达人网友:煞尾
- 2021-11-30 08:49
代码是没有了,我只有VC的,最近在写
老实说,端口不是随机的,我也能知道你是什么意思,就是NAT要返回的。
在收到消息的函数里面,会有一个参数,如果是用Windows API做的话,就有一个sockaddr_in的结构体,里面包含了对方的IP和端口,记得端口是高低字节错位的,把高8位和低8位调换一下就好了。
有了对方的IP和端口,直接再向这个IP和端口发消息就好了。
以上的是针对UDP协议的
如果是TCP协议,服务器就更简单了,客户端连接过来,服务器端需要用accept建立连接,建立后直接有一个Socket,以后就一直用这个socket发消息,发过去的就是这个用户的。
老实说,端口不是随机的,我也能知道你是什么意思,就是NAT要返回的。
在收到消息的函数里面,会有一个参数,如果是用Windows API做的话,就有一个sockaddr_in的结构体,里面包含了对方的IP和端口,记得端口是高低字节错位的,把高8位和低8位调换一下就好了。
有了对方的IP和端口,直接再向这个IP和端口发消息就好了。
以上的是针对UDP协议的
如果是TCP协议,服务器就更简单了,客户端连接过来,服务器端需要用accept建立连接,建立后直接有一个Socket,以后就一直用这个socket发消息,发过去的就是这个用户的。
全部回答
- 1楼网友:猎心人
- 2021-11-30 11:56
UDP还是TCP?
- 2楼网友:野味小生
- 2021-11-30 10:35
vb 里有个winsock控件,可以用这个
- 3楼网友:封刀令
- 2021-11-30 08:59
以下代码可以用来监视用户打开的端口和ip:
Private Type MIB_TCPROW
dwState As Long
dwLocalAddr As Long
dwLocalPort As Long
dwRemoteAddr As Long
dwRemotePort As Long
End Type
Private Type MIB_TCPTABLE
dwNumEntries As Long
table(100) As MIB_TCPROW
End Type
Private Declare Function GetTcpTable Lib "iphlpapi.dll" (ByRef pTcpTable As MIB_TCPTABLE, ByRef pdwSize As Long, ByVal bOrder As Long) As Long
Public Sub GetPort()
On Error Resume Next
Dim TCP As MIB_TCPTABLE
Dim i As Long '控制循环
GetTcpTable TCP, Len(TCP), 1
For i = 0 To TCP.dwNumEntries - 1
'TCP.table(i).dwRemoteAddr ——连接的远程ip
'TCP.table(i).dwRemotePort ——连接的远程端口
'TCP.table(i).dwState ——连接状态
Next
End Sub
但是这个方法仅仅用来监视所有的网络连接情况,不能具体知道是什么程序连接了什么,比如只能知道电脑连接了8000端口,却不知道是OICQ连接的。
Private Type MIB_TCPROW
dwState As Long
dwLocalAddr As Long
dwLocalPort As Long
dwRemoteAddr As Long
dwRemotePort As Long
End Type
Private Type MIB_TCPTABLE
dwNumEntries As Long
table(100) As MIB_TCPROW
End Type
Private Declare Function GetTcpTable Lib "iphlpapi.dll" (ByRef pTcpTable As MIB_TCPTABLE, ByRef pdwSize As Long, ByVal bOrder As Long) As Long
Public Sub GetPort()
On Error Resume Next
Dim TCP As MIB_TCPTABLE
Dim i As Long '控制循环
GetTcpTable TCP, Len(TCP), 1
For i = 0 To TCP.dwNumEntries - 1
'TCP.table(i).dwRemoteAddr ——连接的远程ip
'TCP.table(i).dwRemotePort ——连接的远程端口
'TCP.table(i).dwState ——连接状态
Next
End Sub
但是这个方法仅仅用来监视所有的网络连接情况,不能具体知道是什么程序连接了什么,比如只能知道电脑连接了8000端口,却不知道是OICQ连接的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯