Foxtable(狐表)用户栏目专家坐堂 → UDPClient端口问题


  共有3260人关注过本帖树形打印复制链接

主题:UDPClient端口问题

帅哥哟,离线,有人找我吗?
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109720 积分:558310 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/28 8:57:00 [显示全部帖子]

客户端(本地机器)和服务端UDPClient的IP都可以设置成0.0.0.0。Port打开值位于1024~65535之间,不能和其它已使用的端口冲突即可,取什么值自己喜欢即可。

ReceivedMessage

UDPClient收到信息后触发。

e参数属性:

Bytes:      字节数组,以字节数组形式返回收到的信息。
Message:    字符型,以字符形式返回收到的信息,编码格式由EncodingName属性决定。
ReturnBytes:字节数组,指定要返回给发送者的字节数组。
ReturnValue:字符型,指定要返回给发送者的字符信息。
IP:         字符型,返回对方IP。
Port:       整数型,返回对方端口。

IPEndpoint: IPEndpoint型,返回对方的IPEndpoint


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109720 积分:558310 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/31 9:20:00 [显示全部帖子]

首先至少需要2个项目。就好像要打电话,如果只有一台手机,自己打给自己有意义么?上面的代码就是自己把消息发给自己,没有意义!

A项目
Dim IP As String = A项目电脑IP    '如果不在同一台电脑,可以设置为0.0.0.0,如果在同一台电脑测试,使用127.0.0.1
If UDPClients.Count = 0 Then
    UDPClients.Add("UDP1")
    UDPClients("UDP1").IP = IP
    UDPClients("UDP1").Port = 52178
    UDPClients("UDP1").Start()
End If

如果要给B项目发消息:(前提是B项目已经启动了UDPClients)
UDPClients("UDP1").Send(B项目电脑IP, 52179, User.Name & "|" & TBN.Value)

B项目
Dim IP As String = B项目电脑IP    '如果不在同一台电脑,可以设置为0.0.0.0,如果在同一台电脑测试,使用127.0.0.1
If UDPClients.Count = 0 Then
    UDPClients.Add("UDP1")
    UDPClients("UDP1").IP = IP
    UDPClients("UDP1").Port = 52179 '2个项目的打开不能一样
    UDPClients("UDP1").Start()
End If

如果要给A项目发消息:(前提是A项目已经启动了UDPClients)
UDPClients("UDP1").Send(B项目电脑IP, 52178, User.Name & "|" & TBN.Value)

也就是说UDPClient项目既可以当服务端,也可以当客户端,可以互相发消息,不需要专门的服务端,只需要知道对方的IP和端口即可

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109720 积分:558310 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/2 9:45:00 [显示全部帖子]

对于远程服务器电脑中的程序:

    1. 在AfterOpenProject事件中,加入开启UDPClient的代码:

    If UDPClients.Count = 0 Then
        UDPClients.Add("UDP1")
        UDPClients("UDP1").IP = "
0.0.0.0"
        UDPClients("UDP1").Port = 52179 
        UDPClients("UDP1").Start()
    End If

对于本地电脑中的程序:
2.在需要发送消息的功能中加入下面的代码:

    Dim IP As String = Vars("RemoteIP")    '如果服务器在局域网,使用服务器局域网IP;如果服务器在外网,使用服务器外网IP,如果是云服,看看:需要设置安全组和防火墙:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&replyID=714467&ID=104284&skin=1
    UDPClients("UDP1").Send(IP, 52179, User.Name & "|" & TBN.Value)




 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109720 积分:558310 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/8/5 8:57:00 [显示全部帖子]

回传消息,直接在事件里返回即可,不需要在设置什么了

ReceivedMessage

UDPClient收到信息后触发。

e参数属性:

Bytes:      字节数组,以字节数组形式返回收到的信息。
Message:    字符型,以字符形式返回收到的信息,编码格式由EncodingName属性决定。
ReturnBytes:字节数组,指定要返回给发送者的字节数组。
ReturnValue:字符型,指定要返回给发送者的字符信息。


至于示例,与ASP.NET网页进行交互示例

 

官方网站为本节内容提供了示例,下载地址:
http://www.foxtable.com/samples/UDPWeb.rar


 回到顶部