首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Verizon Aircard发送UDP数据包

通过Verizon Aircard发送UDP数据包
EN

Stack Overflow用户
提问于 2011-12-07 23:15:08
回答 1查看 341关注 0票数 1

如果有人在其他地方询问并回答了这个问题,我很抱歉。我搜索和阅读了所有的密切话题,但没有找到一个成功的.

这是我的情况。我的客户端有发送和接收UDP数据包的软件。终端用户软件运行在通过Verizon连接的笔记本电脑上。(我会解释为什么这很重要.)他们希望我在一个设定的间隔内从服务器请求一个报告,所以他们不需要记住从服务器请求它。要做到这一点,我必须欺骗服务器,使其认为我是它的客户端软件,并满足我的请求。它并没有听起来那么糟糕。

我的程序通过UDP数据包将请求发送到服务器。服务器认为请求来自它自己的客户端软件,并将结果发送回客户端。他们的移动客户端处理信息,我的程序闲置到下一个间隔。大家都很开心。我通过将wireshark放到系统上,观察数据包来回移动,然后解剖UDP数据包来实现这一点。

根据wireshark的说法,客户端将其数据包发送到端口6767,服务器在端口6868上接收它。当我直接连接到他们的网络时(作为一个测试),我就能够做到这一点。然而,当我把我的软件移到他们的移动部门,在verizon上运行时,它就不能工作了。据我所知,数据包仍在上升,但服务器没有识别它们。问题是Wireshark无法在Verizon上捕获数据包,所以我不能像在网络上那样比较字节。我的客户--在讨论网络问题时似乎有点头晕--告诉我,端口保持不变,不管它们是在网络上还是在aircard上。

我运行的简单代码如下所示:

代码语言:javascript
复制
public void transmitUDPDataPacket(string IP, string portStr)
 {
    Int32 port = 0;
    try
     {
          port = Convert.ToInt32(portStr);
      }
    catch (Exception ex)
      {
         resultFailed("FAILED: transmitDataPacket " + ex.Message);
         return;
      }
    Socket sending_socket = new Socket(AddressFamily.InterNetwork, 
                          SocketType.Dgram, ProtocolType.Udp);
    IPAddress send_to_address = IPAddress.Parse(IP);
    IPEndPoint sending_end_point = new IPEndPoint(send_to_address, port);
     try
      {
        sending_socket.SendTo(data, data.Length, SocketFlags.None, sending_end_point);
      }
etc.

所以,有些问题:

  1. 我知道如何在UDP命令中指定端点(即6868)。但我不知道从我的终端(即6767)到哪个端口。有这样的事吗?
  2. 除了购买特殊的软件之外,还有什么可以捕获Verizon的数据包吗?
  3. 我应该使用什么样的SocketType枚举?目前,我正在使用Dgram,但我想切换到RDM --尽管我不认为这会有什么不同,无论如何,这是一个想法。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-07 23:26:30

关于第1点:您正在寻找Bind()方法。

对于第3点:坚持Dgram,这将大致转化为UDP。还有其他可用的数据报方法:RUDPUDP-liteDCCPRDS,但普通的旧UDP在公共互联网上的传输要比任何其他选择都容易得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8424015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档