草庐IT

d-programming-language

全部标签

客户端/服务器 : Integer always received as 1 (C-programming)

我正在构建一个通过TCP交换数据的客户端和服务器程序,当操作成功时,我无法将ACK确认从服务器发送回客户端。我已经成功地从客户端向服务器发送了一个包含各种成员的结构,然后服务器应该通过向客户端发送一个确认该结构ID的整数来响应。在server.c中我有这个函数:intsendACK(intsocket,intack_int){intcom_result;intACK=htonl(ack_int);printf("\n\tSendingACKwithvalue:%i",ack_int);com_result=send(socket,&ACK,sizeof(ACK),0);if(com_r

language-agnostic - tcp底层传输机制/网络编程

我已搜索但找不到以下内容:Process1通过TCP套接字传输数据。做传输的代码是(伪代码)//Section1write(sock,data,len);//anylanguage.Justwritedata//Section2写入后的Process1可以在section2中继续,但这并不意味着数据已经传输完毕。TCP可以缓冲数据以供以后传输。现在Process2与Process1同时运行。这两个进程都尝试并发发送数据。IE。两者都有上面的代码。问题1:如果两个进程同时向TCP套接字写入数据,数据最终将如何通过IP/OS在线传输?a)Process1的所有数据后跟Process2的所有

network-programming - recvfrom 最大缓冲区 TCP/IP

我正在编写一个小的C程序来理解套接字。recvfrom返回数据的最大长度是多少?recvfrom(raw,packet_buffer,buf_size,...);Linux中的最大buf_size是多少。有没有和这个size_t相关的常数?谢谢 最佳答案 这并不是一个真正的直接答案……对这个问题有些倾斜。对于TCP/IP,即使您确定了系统的最大大小,最好实现不依赖于此的代码。使用面向流的套接字,多余的数据不会丢失。所以你可以再次调用接收函数来检索剩余的数据。但是,对于面向消息(UDP)的连接来说情况并非如此。

language-agnostic - TCP 慢启动、拥塞避免和确定带宽

是否有某个公式可用于确定需要通过TCP连接传输以确定其带宽的最小段数/字节数,并考虑到慢启动和拥塞避免?我知道pathratetool,但如果可能的话,我想要一些更简单的东西,我可以将其合并到应用程序中以获得下降的大概数字。一个使用示例是从网络服务器下载一些数据,以确定自动下载一堆小文件的最佳线程数。这与我之前发布的一个问题有关:TCP,HTTPandtheMulti-ThreadingSweetSpot 最佳答案 您可以启动scholar.google.com并搜索“TCPchirp”。但是,这需要雇用计时器,如果您不编写内核tc

network-programming - TCP/IP 协议(protocol)和网络拓扑

我是网络相关方面的新手。我有一些与tcp/ip协议(protocol)和网络相关的基本问题如果两台PC运行的客户端和服务器(通过异步套接字进行通信)之间的网络交换机(在LAN网络中)断电。可以通知客户端和服务器套接字连接不再事件。客户端和服务器在WinXP操作系统上运行,并使用C#进行编码。网络拓扑在套接字客户端和套接字服务器之间的半开放连接的情况下是否起作用。例如是否将其中一端或两者的断开连接状态通知给另一端,这是否取决于网络拓扑。提前致谢。 最佳答案 如果路由器/集线器/交换机等网络元素出现故障,它不会主动导致TCP层上发生任何

language-agnostic - Nagle 算法和延迟 ACK 是否影响 TCP 连接设置?

客户端的SYN和服务器的SYN+ACK是否被Nagle延迟了?客户端对服务器SYN的ACK是否会延迟?连接会在rtt+spt之后返回还是需要rtt+spt+2xNagle延迟?或者更一般地说,Nagle算法和延迟ACK如何影响TCP连接设置? 最佳答案 不,NAGLE不影响SYN或SYN+ACK。延迟的ACK也没有(从逻辑上讲,您希望SYN+ACK尽快返回,并且无论如何都不存在导致延迟的拥塞状态)。 关于language-agnostic-Nagle算法和延迟ACK是否影响TCP连接设置

network-programming - Linux 网络堆栈是否在多核机器上并行运行?

我有一台运行Linux2.6.x的4核机器。该机器是单宿主机(即具有1个NIC)。在这台机器上,我运行4个进程(或者,1个进程中有4个线程),它们与网络上的4个不同主机进行网络I/O。问题:这4个网络I/O线程可以并行运行吗?我可以假设TCP/IP堆栈(包括NIC设备驱动程序)都是可以利用多个内核完全并行运行的并发代码吗?在它们的网络I/O的任何阶段,这些线程是否会阻止尝试获取TCP/IP堆栈中的某些共享资源,从而导致堆栈的一部分——以及位于顶部的4个应用程序级线程——部分中断顺序而不是完全并行? 最佳答案 是的,所有4个线程都会进

network-programming - 编程中以太网和 TCP/IP 协议(protocol)的区别?

如果一个套接字对以太网开放,那么它是否与TCP/IP中的套接字相同?在一些现有代码中,我发现它支持以太网协议(protocol),这是否意味着我可以使用TCP套接字客户端连接到此以太网套接字。我很困惑,请帮忙。提前致谢萨加尔 最佳答案 原始以太网套接字,例如SOCK_RAW,如果您不编写协议(protocol)处理程序(您不想这样做),则不能用于TCP通信。您应该知道如何在原始以太网模式下打开套接字时序列化/反序列化以太网帧。SOCK_STREAM是TCP的模式,互联网上充斥着TCP客户端/服务器代码的示例。

network-programming - 使用 DPDK 创建 tcp/ip 连接

我想知道是否有一种方法可以使用DPDK在用户空间建立TCP连接而无需从内存中复制数据包?我对此很陌生,我不知道从哪里开始,任何关于如何开始的建议都会有所帮助。我尝试使用谷歌搜索一些提示,或者如果有人问过,但我找不到很多资源。 最佳答案 DPDK是一组用于快速数据包处理的库和驱​​动程序。它没有开箱即用的TCP/IP堆栈。因此,要建立TCP连接,您需要在DPDK之上使用TCP/IP堆栈。栈有很多种,例如:F-Stackhttp://www.f-stack.org/顶级域名https://wiki.fd.io/view/TLDK还有很多

network-programming - 如何确保 UDP 服务器不会丢失传入数据?

有一个数据馈送服务器通过UDP接收来自各种客户端的馈送,因为客户端抽取数据的速度非常快,如果服务器花时间处理接收到的数据,接收缓冲区很容易变满,所以如果feed服务器有帮助只是多播它收到的所有数据到LAN上的其他服务器数据馈送服务器有第二个网卡连接到?其他每一个服务器只接收数据担心处理和离开其他数据到其他服务器。如果传入数据仍然到达太快了,有什么攻略确保不会丢失任何数据?谢谢。 最佳答案 一些可以尝试的策略包括确保接收进程在接收线程中做很少的事情,只需读取数据并将其发送到内部队列以供另一个线程处理-这应该会减少接收缓冲区填满的可能性