草庐IT

compact_protocol

全部标签

java - 为自定义 TCP 协议(protocol)实现客户端

我必须实现一个客户端,以便通过基于XML格式的自定义协议(protocol)与服务器进行通信。这是一个应用层协议(protocol),基于TCP。因此,我的客户端发送请求XML消息并接收响应,也是XML消息。现在,我考虑如何确保在开始解析之前收到完整的消息。我看到两个方法:接收到一些表示消息结束的魔数(MagicNumber)的字节。这是最好的方法(对我来说),是吗?但是,可能没有魔数(MagicNumber),消息的大小也未知。那个案子呢?我看到了一些其他协议(protocol)的客户端,我看到了类似的东西。while(true){r=socket.read(buffer,offse

php - Omegle 如何直接连接 HTTP 协议(protocol)?

每个ajax聊天教程都以相同的方式结束。您每X毫秒运行一次getChatMsg.php或某个脚本来检查新消息。但omegle.com不是,他们只在您真正需要时才向您发送数据包,而不是每隔X毫秒发送一次数据包。例如,我运行我设置的每个ajax聊天教程并嗅探数据包,当我还没有打字时,我每秒都会收到getChatMsg或类似的流。Omegle在不使用任何外部对象(如FLASH)的情况下完美地处理了它。他们如何进行直接连接?谁能解决这个问题,你能帮我解决这个问题吗?我已经尝试解决这个问题好几个星期了,我快要疯了,因为以目前的方式这样做会浪费多少带宽。 最佳答案

c++ - 高效的数据包类型/传输协议(protocol)

在C++中使用boost::asio,我试图确定在我的程序中加密数据包的最佳方法。我想通过类型号自己定义数据包,每个数据包都有不同的固定数据包大小。系统读取标题(数据列表条目的类型和数量)并创建适当的结构来接收数据,然后根据接收到的数据使用react。但是,当我看到这个方法时,我想知道是否有更简单的方法可以在不牺牲效率的情况下实现这一点。这些数据包将通过TCP在不同的应用程序之间发送。理想情况下,我的目标是这两个应用程序使用尽可能少的带宽和CPU,同时尽可能简单地修改。有什么建议吗? 最佳答案 TCP使用数据的流,而不是数据包。我强

.net - 使用 netTCP 协议(protocol)实现 WCF

在成功让WCF服务和客户端使用Http相互通信后,我现在正尝试将其切换到netTcp,以便我可以加密通信。但是,我无法根据该协议(protocol)建立连接。更改服务上的App.config文件并删除客户端项目中的服务引用后,我正在尝试重新添加服务引用。单击“发现”可找到该服务,但在地址为http://localhost:31284/MyService.svc的http上这不是我在任何地方指定的地址:我认为它一定是默认地址。如果我尝试添加此服务,我会收到错误消息:TheHTMLdocumentdoesnotcontainWebservicediscoveryinformation.Me

protocols - 互联网应用程序的开源应用程序/协议(protocol)

在不久的将来,我需要开始一个新项目,该项目由高负载的TCP/IP服务器和与该服务器通信的客户端组成。我了解TCP/IP的基础知识,可以使服务器和客户端通过网络进行通信。问题是我需要找到一些方法来保护服务器免受其他可以发送虚假数据并可能使服务器崩溃的“客户端”的影响。我正在寻找可用于我的应用程序的应用程序级协议(protocol)的任何想法或建议。很确定一定有某种开源MMORPG游戏已经实现了这样的协议(protocol)。非常欢迎任何其他想法。附言我已经检查了WorldForgeproject. 最佳答案 使用身份验证并编写您的服务

c++ - 通过 TCP 实现 TLV 协议(protocol)

我目前正在尝试实现一个在TCP之上使用的(T)LV协议(protocol)。该协议(protocol)的一个非常早期的版本是通过为每个send-recv对发送一条消息来构建的。(即send("messagetotransmit"--recv(...))。这在带宽方面真的很糟糕——我猜是因为我发送的数据包非常小。所以现在我正在尝试切换到LV协议(protocol),一次发送多条消息,仅按各自的长度分隔(我现在使用ProtocolBuffers来序列化我的数据)。我现在有两个问题:在python中,我通过执行发送sock.send(struct.pack("如果我现在将它放入一个循环中并发

sockets - 如何从给定套接字读取协议(protocol)信息?

给定一个套接字,如何找到它的协议(protocol)(即UDP或TCP)?我想到的是使用“getsockname()”==>sockaddr_in。但是“sockaddr_in”好像没有协议(protocol)信息,只有family。创建套接字时,提供协议(protocol)。我只是知道如何检索。感谢您的帮助。 最佳答案 使用getsockopt(2)检查SO_PROTOCOL和/或SO_TYPE套接字选项. 关于sockets-如何从给定套接字读取协议(protocol)信息?,我们在

http - 用于流式传输 A/V 提要的协议(protocol)

网络摄像头使用什么协议(protocol)通过互联网流式传输音频/视频?HTTP?TCP?协议(protocol)中的每一帧是如何发送的?例如,如果他们使用HTTP,网络摄像头软件是否对每个帧进行编码并将其添加为查询字符串参数,例如:http://www.some-url.com?encoded-frame=WJDJ84FU84F85594DK3DK或者,编码帧是否设置为HTTP请求的主体?TCP或任何其他使用的协议(protocol)的类似问题。我问这个问题是因为我想将网络摄像头流式传输到网络服务器,并拥有可以接收每个编码帧、对其进行解码并对其进行处理的软件。提前致谢。

c# - 如何通过远程桌面协议(protocol)生成静态连接字符串

我已经在C#中实现了远程桌面协议(protocol)终端服务。服务器生成连接字符串,客户端使用此连接字符串与服务器连接。问题是每次我启动服务器时,都会生成一个新的连接字符串。有什么方法可以生成静态连接字符串。我的两台电脑都通过电线相互连接...... 最佳答案 在连接字符串中,有一个以前缀“2001:”开头的全局ipv6地址。如果机器重新启动或互联网ipv4地址更改,此地址会更改,之后连接字符串无效。Windows具有PNRP名称,这些名称是计算机的128位唯一名称,并使用p2pDNS解析机制解析为适当的ipv6地址。您可以检查下面

sockets - 哪些协议(protocol)值与 socket() 中的哪些域和类型组合兼容?

我在玩Berkeley套接字,然后我这样做了:#include#include#includeintmain(){autores=socket(AF_INET6,SOCK_STREAM,58);if(res输出是:创建套接字时出错:不支持协议(protocol)。我选择58是因为我想尝试以ICMPIPv6套接字为例,并使用/etc/protocols的内容我得到了这个:ipv6-icmp58IPv6-ICMP#IPv6的ICMP。然后我尝试用0代替上面代码中的58,程序运行良好。所以我的问题是:如果我们有,为什么在socket()调用中需要第三个参数已经在第二个参数中将SOCK_STR