我试图做一些IP非神学编码编码,而且正如各种来源所建议的那样,我试图使用ock子——储存。 然而,所有APICA电话(getaddrinfo、Sapnameinfo)仍然依靠堆积机。 他们之间的争.完全是好的选择,引起许多其他问题。
而把 s子和ock子分别_倒在6种,使我试图使用ock子——储存的目的落空。
有效使用ock子的所有人——在开发简单的客户服务器袖珍应用程序时储存。
我试图做一些IP非神学编码编码,而且正如各种来源所建议的那样,我试图使用ock子——储存。 然而,所有APICA电话(getaddrinfo、Sapnameinfo)仍然依靠堆积机。 他们之间的争.完全是好的选择,引起许多其他问题。
而把 s子和ock子分别_倒在6种,使我试图使用ock子——储存的目的落空。
有效使用ock子的所有人——在开发简单的客户服务器袖珍应用程序时储存。
共同编制IPV6和IPV4方案的问题在于,纯粹的震.本身不足以让一个 s子。 因此,如果你需要盲目地通过可能会成为震.者或冲击者_in6的地址,那么,震add者——储存会更容易使用。
归根结底,你是否使用ock子、ock子6或ock子——储存,都不得不让这些点人发出呼吁,发出呼吁,放弃、连接、接受和许多其他袖珍职能。 这只是一个已知的细微细微的方案拟订。 更不用说采取某种不安全的做法。 你的法典将ok。
现在,在为IPV4和IPV6工作而撰写网络代码时,你可以很容易地进入一个陷阱,即有大量的开关说明来处理不同的网络类型。 之后,《刑法》就象以下几条:
if (addr.ss_family == AF_INET)
sendto(sock, buffer, len, 0, (sockaddr*)&addr, sizeof(sockaddr_in))
else (addr.ss_family == AF_INET6)
sendto(sock, buffer, len, 0, (sockaddr*)&addr, sizeof(sockaddr_in6));
这样,这种“如果家庭=AF_INET”的表述就很容易开始重复。 这是你想要避免的。
假设你正在使用C++,你就会发现,单列物体的抽象类别是令人难以置信的。 例如,见https://github.com/jselbie/stunserver/blob/master/stuncore/socketaddress.h。 CSocketAddress这一班由1{sockaddr, sockaddr_in, sockaddr_in6}组成的一个联盟支持,可与一个ock子公司建造。 如果在我开始这一轮班之前,我已经知道过大屠杀,那么我本来会利用这种说法,而不是工会。 无论如何,它允许我写以下法典:
CSocketAddress addr;
...
sendto(sock, buffer, len, 0, addr.GetSockAddr(), addr.GetSockAddrLength());
同样,“接受”声明也认为:
sockaddr_storage addrstorage = {};
int len = sizeof(sockaddr_storage);
accept(sock, (sockaddr*)&addrstorage, &len);
CSocketAdddress addr(addrstorage); // construct an address object to pass around everywhere else
这对要求、发送和停用的守则道路是令人难以置信的。 现在,我的STUN服务器和客户代码线已不复存在,不必再了解有关家庭类型袖珍地址的任何情况。 他们只是用“应急处理”物体开展工作。 唯一的IPV4和IPV6具体编码是在客户和服务器初始化期间,即地址物体实际建造。 幸运的是,这也是部分抽象的。
您也不妨利用助手职能here。 解决东道国名、列举适应者等等方面有一些更为有益的障碍。 这部法律是无赖的,但其中一部分应当把ok光描绘到Windows和取胜。
我几乎做了一些工作,为这一法典基础增添了TCP的支持。 在增加对SOCK_STREAM的支持的过程中,我没有做单一改动,也没有增加任何新的法典来应对IPV4和IPV6在结构上的分歧。
我一般看不到需要<条码> 座标座机_storage。 其目的是为任何特定议定书的震 the结构分配足够的空间,但是,在IP-转化-异常法中,你需要做些什么? 总的来说,请打电话getaddrinfo(
>,并交给您struct sockaddr *
,而您则不注意是否重订了sockaddr_in 6
或sockaddr_in6
。
In typical client/server code, the main place I can think of where struct sockaddr_storage
is useful is to reserve space for the second parameter to accept()
. In this case I agree it s ugly to have to cast it to struct sockaddr *
once for accept()
and again for getnameinfo()
. But I can t see a way around those casts. This is C. Structure inheritance always involves lots of casts.
I have a slightly unusual situation where I m needing to maintain CLIENT tcp connections to another server for thousands of mobile users on my servers (basically the mobile devices connect to my ...
In short I m creating a socket server so I can add multiplayer support to my Flash game (Using Actionscript 3.0 Binary Socket on the Client-End). I decided to go with Python since I m the sole ...
If I have a Java program that listens to multicast data, how can I tell what the remaining TTL of the incoming datagram is? I know how to set the TTL on the sending multicast socket, but I want to ...
I m trying to receive a variable length stream from a camera with python, but get weird behaviour. This is Python 2.6.4 (r264:75706) on linux(Ubuntu 9.10) The message is supposed to come with a ...
I m developing an application that detects Source-based games running on the LAN. Following up on the specifications provided by Valve, I have it narrowed down to exactly what I want: making a UDP ...
I want use a Redis server with a PHP Site hosted on a MediaTemple GS hosting. MT allows PHP Sockets to contact an external server (slicehost)?
Here s a snippet of code I m using in a loop: while True: print loop rlist, wlist, xlist = select.select(readers, [], [], TIMEOUT) print selected # do stuff At a certain point, ...
Does anyone know what Socket.UseOnlyOverlappedIO does, and if so, does it affect performance? There seems to be no real explanation on MSDN. Thanks in advance.