HTML5 websockets目前使用TCP通信的形式.然而,对于实时游戏,TCP不会削减它(并且是使用其他平台的很好的理由,如本机).由于我可能需要UDP来继续项目,我想知道HTML6的规格是否支持UDP?
此外,是否有任何可靠的WebSockets基准测试可以将WS协议与低级直接套接字协议进行比较?
好的,这是我一直试图弄清楚几天的.我们在Windows Phone 7上有一个应用程序,其中电话加入多播组,然后向该组发送和接收消息以相互通信.注意 - 这是电话到电话的通信.
现在,我正在尝试将此应用程序移植到Windows Phone 8 - 使用Visual Studio 2012中的"转换为电话8"功能 - 到目前为止一切顺利.直到我尝试测试手机到手机通讯.手机似乎很好地加入了这个组,他们发送的数据报很好.他们甚至收到他们发送给群组的消息 - 但是,没有手机从其他手机收到消息.
以下是我的页面背后的示例代码:
// Constructor
public MainPage()
{
    InitializeComponent();
}
// The address of the multicast group to join.
// Must be in the range from 224.0.0.0 to 239.255.255.255
private const string GROUP_ADDRESS = "224.0.1.1";
// The port over which to communicate to the multicast group
private const int GROUP_PORT = 55562;
// A client receiver for multicast traffic from any source
UdpAnySourceMulticastClient _client = null; …Run Code Online (Sandbox Code Playgroud) 这个问题不是 STREAM类型和DATAGRAM类型INTERNET套接字之间的区别.我知道STREAM套接字使用TCP,数据报套接字使用UDP和所有TCP,UDP内容,按顺序到达的数据包,ACK,NACK等.我理解这些在互联网上的重要性.
Q1)当我创建一个本地套接字的UNIX域套接字时,如果套接字是STREAM套接字或DATAGRAM套接字,这将是多么重要.这种类型的套接字会将数据写入套接字文件,在这种情况下协议是否重要,因为我不通过网络传输数据?如果我使用基于UNIX的DATAGRAM套接字,在这种情况下是否有丢失数据的可能性?
Q2)UNIX DATAGRAM套接字是否提供比UNIX STREAM套接字更好的性能?
Q3)如何在我的应用程序中决定基于STREAM/DATAGRAM UNIX的套接字?
谢谢
我需要知道我可以发送到另一台计算机的最大UDP数据包没有碎片.
该大小通常称为MTU(最大传输单元).据推测,在两台计算机之间,将有许多可能具有不同MTU的路由器和调制解调器.
我读到Windows中的TCP实现自动找到路径中的最大MTU.
我也在试验,我发现从我的电脑到服务器的最大MTU是57712字节+标题.上面的任何东西都被丢弃了.我的电脑在局域网上,不是MTU应该在1500字节左右吗?
什么是TCP连接?我知道从客户端到服务器没有物理连接.这个连接只是客户端的套接字与三次握手后服务器创建的新套接字相关联吗?此后,一旦建立"连接",连接两端的套接字就会知道将数据包发送到何处.
这与UDP初始与TCP的握手之外的其他方式有什么不同?是每个服务器套接字只有一个客户端将数据包发送到该特定套接字?
在主机之间建立专用连接有哪些可能的优势?我对TCP和UDP的理解仍然非常基础,因此广泛的概括就足够了.
我在linux上有一个java应用程序,它打开UDP套接字并等待消息.
在重负载下经过几个小时后,会丢失数据包,即数据包是由内核接收的,而不是我的应用程序接收的(我们在嗅探器中看到丢失的数据包,我们看到netstat中的UDP数据包丢失,我们看不到这些数据包在我们的app日志中).
我们尝试扩大套接字缓冲区,但这没有任何帮助 - 我们之前开始丢失数据包,但就是这样.
对于调试,我想知道在任何给定时刻OS udp缓冲区的完整性.谷歌搜索,但没有找到任何东西.你能帮助我吗?
PS伙计们,我知道UDP是不可靠的.但是 - 我的计算机接收所有UDP消息,而我的应用程序无法使用其中一些消息.我想优化我的应用程序,这就是问题的原因.谢谢.
今天早上,工作中出现了大问题,因为SNMP陷阱没有"通过",因为SNMP是通过UDP运行的.我记得在大学的网络课上,UDP不能保证像TCP/IP一样传送.维基百科说SNMP可以通过TCP/IP运行,但UDP更常见.
我发现UDP over TCP/IP的一些优点是速度,广播和多播.但在我看来,有保障的传输对于网络监控比对广播能力更重要.特别是当存在严重的高安全性需求时.我的一位同事告诉我,当流量变大时,UDP数据包是第一个被丢弃的数据包.这是通过UDP优先使用TCP/IP进行网络监控(IMO)的另一个原因.
那么为什么SNMP使用UDP呢?我无法弄清楚,也无法在谷歌找到一个好理由.
我有一个TCP服务器,它侦听传入的客户端,然后每秒向它发送一个数据包.我想知道,SYN/ACK数据包是否仅在初始连接时发送,所以它看起来像这样:
<client connect>
SYN
ACK
DATA
DATA
DATA
<client disconnect>
Run Code Online (Sandbox Code Playgroud)
或者它是否与每个数据包一起发送,像这样?
<client connect>
SYN
ACK
DATA
SYN
ACK
DATA
SYN
ACK
DATA
<client disconnect>
Run Code Online (Sandbox Code Playgroud)
此外,如果是第一种情况,如果您只是长时间保持连接打开,那么UDP over TCP是否有任何好处?
出于某种原因,我很难从同一个套接字发送和接收数据.无论如何这里是我的客户端代码:
var client = new UdpClient();
IPEndPoint ep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 11000); // endpoint where server is listening (testing localy)
client.Connect(ep); 
// send data
client.Send(new byte[] { 1, 2, 3, 4, 5 }, 5);
// then receive data
var receivedData = client.Receive(ref ep);  // Exception: An existing connection was forcibly closed by the remote host
Run Code Online (Sandbox Code Playgroud)
基本上我想创建一个协议,我发送一个udp数据包,然后我期待一个响应.就像每个请求的HTTP协议一样,都有响应.如果服务器位于不同的计算机上,则此代码有效.可能存在服务器和客户端在同一台计算机上的情况.
这是服务器:
UdpClient udpServer = new UdpClient(UDP_LISTEN_PORT);
while (true)
{
    var groupEP = new IPEndPoint(IPAddress.Any, 11000); // listen on any port
    var data = …Run Code Online (Sandbox Code Playgroud) 确切地说,BSD套接字send()函数何时返回给调用者?
在非阻塞模式下,它应该立即返回,对吗?
至于阻止模式,手册页说:
当消息不适合套接字的发送缓冲区时,send()通常会阻塞,除非套接字已置于非阻塞I/O模式.
问题:
send()如果内核发送缓冲区中有空间,则调用将始终立即返回?send()TCP和UDP 的呼叫行为和性能是否相同?如果没有,为什么不呢?