问题标签 [network-programming]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2091 浏览

network-programming - 如何对应用程序的协议进行逆向工程?

我正在使用一个不太流行的应用程序(即时通讯程序)。我试图找到它使用的协议。我知道它正在使用 TCP/IP,但我想找出它发送到服务器并从服务器接收的所有命令。

我尝试了几个嗅探器,但它们无法通过名称识别此应用程序,而且我得到的只是一些不相关的十六进制代码。

有什么想法可以找到应用程序的规格吗?

(请注意:我用谷歌搜索了它,一无所获,也没有作者的文档。)

0 投票
3 回答
7096 浏览

c++ - IP_HDRINCL 有问题吗?

我已经问过这个关于原始 IP 数据包实现的问题。但我没有得到任何解决方案。

我的代码:

错误:

WSAGetLastError() 返回 10022:

描述:

向 setsockopt (Wsapiref_94aa.asp) 函数提供了无效参数(例如,指定无效级别的参数)。有时,它也指套接字的当前状态,例如,在未侦听的套接字上调用accept (Wsapiref_13aq.asp)。

评论:

但我已经设置了正确的选项值和大小。

我究竟做错了什么?我正在使用 Windows XP (SP3)。在 setsocketopt 中,我为该程序尝试了 IP_OPTIONS,它工作正常,并且它也发送 IP 数据包。但在虚幻中,它为每个 IP 数据包生成来自目的地的 ICMP 数据包。

我怎样才能解决这个问题?

源代码

//原始tcp数据包制作器

0 投票
3 回答
2580 浏览

network-programming - 多人/在线游戏编程中最常见的新手错误?

你见过什么样的新手错误,有什么解决方法?

一次又一次发生的一个是客户端没有针对服务器进行任何检查。

例如:

  • 用户反编译 Flash 游戏源或监听网络流量,查看高分数据的去向,并发送虚假的高分,甚至不玩游戏。
  • 用户使用培训师并获得甚至可能不会出现在当前级别的项目。这发送到服务器,如“客户端 X 得到项目 Y”,服务器只是接受。

简单的解决方法当然是将游戏客户端仅作为服务器的 API 处理。然后用户可以使用他们喜欢的训练器和其他内存操作,但服务器只是说你不能这样做。将服务器视为数据库,您可以在其中查询带有游戏规则的事物。

例如

  • 客户端:开始游戏
  • 客户端:连接到服务器
  • 客户端:从服务器查询可用金额
  • 用户:启用将钱设置为无限的培训师
  • 客户端:server.buyItem('非常昂贵')
  • 服务器:检查游戏状态(用户现在可以购买东西)。检查 player[0].money -> 没有奖金。
  • 客户端:server.buyItem('可以得到这个')
  • 服务器:检查游戏状态(用户现在可以购买东西)。检查 player[0].money,好的。player[0].items.add('can get this') 这将减少来自 player[0].money 的成本。然后通知客户端 send(player[0], 'items', 'can get this'); 发送(玩家[0],'钱',玩家[0].money)。

另一种方法是记录客户端的动作并将其发送到服务器播放它的高分服务器。当然,这会导致该记录非常大。

0 投票
3 回答
36775 浏览

java - Android (Java) 网络编程资源

我想为 Android 开发一个应用程序,它可以通过 TCP 连接传输数据。

有谁知道可以找到客户端-服务器连接示例的任何好的示例或书籍?

我对 Java 和 Android 很陌生,所以我会非常感谢任何建议。

0 投票
10 回答
12667 浏览

c - 如何在 C 中获取我的非环回网络 IP 地址?

对于两台主机之间的通信,我需要将我的主机的 IP 地址发送到另一个站点。问题是,如果我请求我的 IP 地址,可能是我取回了本地环回 IP 地址 (127.xxx) ,而不是网络(以太网)IP 地址。

我使用以下代码:

解决它的唯一方法是确保我在 /etc/hosts 中的主机名位于真实网络地址后面,而不是本地环回(例如 Ubuntu 的默认值)。

有没有办法在不依赖 /etc/hosts 的内容的情况下解决这个问题?

编辑:我改变了上面的代码,所以它使用了 getaddrinfo,但我仍然得到回环设备的号码(127.0,0,1)而不是真实的 IP 地址:

(我曾经用三个 SOCK_STREAM、SOCK_DGRAM 和 SOCK_RAW 取回 3 个 addrinfo 的列表,但提示阻止了这一点)

所以我的问题仍然存在......

0 投票
2 回答
3573 浏览

visual-c++ - 用于网络监控的 Visual C++ API

我必须在 Visual C++ (Windows) 下制作一个网络监控应用程序,你推荐我使用哪些库或 API?

0 投票
8 回答
587 浏览

network-programming - 一个程序与其他程序或其他计算机对话时叫什么

作为一名真正的初学者,人们经常会发现进一步了解的障碍是不知道要谷歌什么。

我已经制作了像 pong 和数独求解器这样的简单程序。这些天来,我想做一些更像 tabslock 或制作多人乒乓球的东西,或者至少开始考虑这会涉及到什么。

那么当程序导致其他程序这样做或那样做时,或者当一个程序与这个庞大互联网中其他地方的另一台计算机上的自身副本进行对话时,它到底被称为什么。

z。

0 投票
6 回答
6785 浏览

python - 用 Python 编写基于套接字的服务器,推荐的策略?

我最近正在阅读这篇文档,其中列出了一些可用于实现套接字服务器的策略。即,它们是:

  1. 每个线程为多个客户端提供服务,并使用非阻塞 I/O 和级别触发的就绪通知
  2. 每个线程为多个客户端提供服务,并使用非阻塞 I/O 和就绪更改通知
  3. 每个服务器线程为多个客户端提供服务,并使用异步 I/O
  4. 使用每个服务器线程为一个客户端提供服务,并使用阻塞 I/O
  5. 将服务器代码构建到内核中

现在,我会很感激在 CPython中应该使用哪个提示,我们知道它有一些优点,也有一些缺点。我最感兴趣的是高并发下的性能,是的,当前的一些实现太慢了。

因此,如果我可以从简单的开始,“5”就出来了,因为我不会将任何东西侵入内核。

“4” 看起来它也因为 GIL 而必须出局。当然,您可以在这里使用多处理来代替线程,这确实会带来显着的提升。阻塞 IO 还具有更容易理解的优点。

在这里,我的知识有所减弱:

“1”是传统的选择或轮询,可以简单地与多处理结合。

"2" 是准备更改通知,由较新的 epoll 和 kqueue 使用

“3”我不确定是否有任何具有 Python 包装器的内核实现。

因此,在 Python 中,我们有很多很棒的工具,比如 Twisted。也许它们是一种更好的方法,尽管我已经对 Twisted 进行了基准测试,发现它在多处理器机器上太慢了。我不知道,也许用负载平衡器进行 4 次扭曲可能会做到这一点。任何意见,将不胜感激。

0 投票
2 回答
423 浏览

c++ - C/C++ Windows 流量拦截器

我想为我的机器后面的网络开发一个带宽分配器。

现在,我已经阅读了有关 NDIS 的信息,但我不确定既不是来自我的机器也不是发往我的机器的网络流量是否会进入我的 TCP/IP 堆栈,以便我可以通过 NDIS 阻止/取消阻止数据包窗户机。

0 投票
4 回答
3096 浏览

c++ - 开源和跨平台多人游戏/网络库?

虽然raknet看起来相当有趣并且从功能的角度来看确实很吸引人,但它的许可条款似乎对于可能在商业上利用的 GPL 项目来说可能很麻烦,这是知识共享许可条款明确禁止的。

虽然也有opentnl,但它现在似乎不再被积极维护,事实上下载最新的稳定 tarball 甚至在编译过程中也会失败,因为它似乎不支持 gcc >= 3.0 (?)

当然,还有enet,但是这个不能和 raknet/opentnl 支持的抽象特性相比。

那么,除了诸如 ACE、Boost 或 Poco 之类的重要依赖项之外,是否有任何可行的替代方案来嵌入一个相当紧凑、维护良好的 UDP 网络库?

谢谢